5

我已经阅读了一个数据集列表并将其命名为 n。我想做的是从n中获取数据集的一个子集,然后在R中将它们绑定在一起。当我尝试这样做时,rbind(n)这只是给了我所有数据集名称的数据框,而不是实际放置元素每个数据集在彼此之下。我想要做的是绑定共享一个通用名称的数据集的子集。例如,18 个数据集以“4”开头。我想把所有这些结合在一起。是否有捷径可寻?

4

2 回答 2

11

想要你想做的rbind(n[[1]],n[[2]],...)是不一样的rbind(n)

你不需要把它写出来,你可以do.call用来创建和执行它call

 do.call(rbind, n)

这将运行您想要的命令。然而,这是出了名的慢

您可以使用rbindlistdata.table中的内容更快地执行相同的操作

 library(data.table)

 rbindlist(n)

如果您只想要那些名称以4

rbindlist(n[grep(names(n), pattern = '^4')])
于 2013-02-25T02:45:24.010 回答
1

如果您尝试聚合许多文件,您可能需要rbind.fillplyr 包中的函数(如果有 data.table 等效项,我不知道)

ll <- list(a=data.frame(x=1,y=2,z=1),
         b= data.frame(x=2,y=3),
         c=data.frame(x=3:4,y=5))

library(plyr)
Reduce(rbind.fill,ll[c('a','b')])   ## subset by list names and 
                                    ## apply recursively using Reduce
  x y  z
1 1 2  1
2 2 3 NA
于 2013-02-25T03:31:42.790 回答