在具有相似名称的多个数据帧上使用 rbind() 的优雅方法?

eth*_*ane 4 r

目前,我有多个具有相同名称且按运行顺序排列的数据帧(、、、、...foo1等)。我正在尝试创建一个包含上述数据帧的所有行的大型数据帧。有没有一种优雅的方法来做到这一点,相当于?foo2foo3foo4foo5rbind()rbind(foo1, foo2, foo3, foo4, foo5...)

我已经尝试过do.call(rbind, paste0("foo",i))哪里i=c(1,2,3...)没有效果。

这里提到了一个解决方案,那就是: do.matrix <- do.call(rbind, lapply( paste0("variable", 1:10) , get) )

然而,答案神秘地说“这是处理相关项目的错误方法。最好使用列表或数据框,但您可能会在适当的时候找到原因。”

为什么这是错误的方法,什么是“正确”的方法?

谢谢。

bgo*_*dst 6

始终尝试严格捕获相关数据实例、相关数据和方法或相关方法之间的关系。这通常有助于简化聚合操作,例如您的rbind要求。

对于您的情况,您应该从一开始就将相关的 data.frames 定义为单个列表:

foo <- list(data.frame(...), data.frame(...), ... );
Run Code Online (Sandbox Code Playgroud)

然后你的要求就可以得到满足:

do.call(rbind, foo );
Run Code Online (Sandbox Code Playgroud)

如果为时已晚,那么涉及重复调用的解决方案get()(如您链接的文章中所述)可以完成这项工作。