do.call 在函数中 - 找不到对象错误
do.call in a function - object not found error
我试图制作自己的函数,使用 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) 时遇到了同样的错误)。
在创建 p
内部循环后立即添加此行:
p$plot_env <- environment()
我试图制作自己的函数,使用 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) 时遇到了同样的错误)。
在创建 p
内部循环后立即添加此行:
p$plot_env <- environment()