目前,我有多个具有相同名称和运行顺序的数据框(foo1
,foo2
,foo3
,foo4
,foo5
...等等)。我正在尝试使用rbind()
创建一个包含上述数据框的所有行的大型数据框。有没有一种优雅的方式来做到这相当于rbind(foo1, foo2, foo3, foo4, foo5...)
?
我尝试了do.call(rbind, paste0("foo",i))
i=c(1,2,3...)
无效。
有一个solution mentioned here,它是:
do.matrix <- do.call(rbind, lapply( paste0("variable", 1:10) , get) )
然而,答案神秘地说&#34;这是处理相关项目的错误方法。最好使用列表或数据框,但您可能会在适当的时候找出原因。&#34;
为什么这样做是错误的方式,以及&#34;权利&#34;方式是什么?
感谢。
答案 0 :(得分:2)
始终尝试严格捕获相关数据实例或相关数据和方法或相关方法之间的关系。这通常有助于简化聚合操作,例如rbind
要求。
对于您的情况,您应该从一开始就将相关的data.frames定义为单个列表:
foo <- list(data.frame(...), data.frame(...), ... );
然后你的要求可以得到满足:
do.call(rbind, foo );
如果为时已晚,则涉及重复调用get()
的解决方案(如您链接的文章中所述)可以完成此任务。