2012-08-03 129 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