函数中的do.call - 找不到对象错误

时间:2015-12-27 19:27:37

标签: r function ggplot2 do.call

我正在尝试创建自己的函数,它将使用ggplot并将数据帧列表作为参数并排绘制许多图。但是,我遇到了这个错误,据我所知,这个错误与do.call函数和环境问题有关:

my_df<-data.frame(a=rnorm(25),b=runif(25))
my_list<-list(my_df,my_df*2)
reproducible_function<-function(a_list){
  dd<-list()
  for (i in 1:length(a_list)){
    p<-ggplot(data=a_list[[i]],aes(x=1:nrow(a_list[[i]]),y="something"))
    dd[[i]]<-p+geom_line(aes(y=a,colour="a"))+geom_line(aes(y=b,color="b"))
  }

  do.call(grid.arrange,dd)
}
reproducible_function(my_list)

然而,我收到以下错误:

Error in nrow(a_list[[i]]) : object 'a_list' not found 

当不在某个功能中时,一切都顺利进行。但是当我尝试在我自己的函数中使用do.call函数时会发生一些事情(使用eval(parse)时会出现同样的错误)。

1 个答案:

答案 0 :(得分:2)

在内部循环中创建p后立即添加此行:

p$plot_env <- environment()