2012-08-03 153 views
2

今天我注意到一些奇怪的東西。我寫了一個函數,它應該返回一個數據框和一個圖,這個圖是用ggplot2生成的。自定義函數,ggplot和返回值

但是,如果我運行的功能,不會出現情節或數據框。

你知道這個問題,可以給我一個解決辦法嗎?

非常感謝!

這裏是一個虛擬函數,使自己清楚:

dummyfunct<-function(){ 
df <- data.frame(time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")), 
       total_bill = c(14.89, 17.23)) 

ggplot(data=df, aes(x=time, y=total_bill)) + geom_bar(aes(fill=time)) 
return(df) 
} 

dummyfunct<-function(){ 
df <<- data.frame(time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")), 
       total_bill = c(14.89, 17.23)) 

ggplot(data=df, aes(x=time, y=total_bill)) + geom_bar(aes(fill=time)) 
} 
+0

嘗試:'X < - ggplot(數據= DF,AES(X =時間,Y = total_bill))+ geom_bar(AES(填充=時間))'然後' print(x)'這對於在函數中使用ggplot的人來說是一個常見的挑戰。 – 2012-08-03 16:08:00

回答

6

我會回答,但我知道這是一個重複的問題,它可能會關閉:

有了ggplot,你需要明確地使用print在函數內部中:

dummyfunct<-function(){ 
    df <- data.frame(time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")), 
      total_bill = c(14.89, 17.23)) 
    x <- ggplot(data=df, aes(x=time, y=total_bill)) + geom_bar(aes(fill=time)) 
    print(x) 
    return(df) 
} 

dummyfunct() 
+0

謝謝!我確實已經知道,但沒有想過!在您發佈之前想想! ;) – rainer 2012-08-03 16:33:03