【发布时间】:2020-07-09 01:30:49
【问题描述】:
我有几个 data.tables 具有不同的列,我想追加/行绑定。结果应该是一个包含所有列的 data.table(不仅仅是出现所有 rbinded 数据集的列)。这是一个例子
library(data.table)
df1 = data.frame(a = c(1:5), b = c(6:10))
df2 = data.frame(a = c(11:15), b = c(16:20), c = LETTERS[1:5])
rbindlist(list(df1, df2), fill = TRUE)
借用@kdauria 在这篇文章Combine two data frames by rows (rbind) when they have different sets of columns 中的回答。
但我只知道我的数据集是名称向量 c("a","b"),因为它们因场合而异。因此,我正在执行以下操作
goo <- function(...) rbind(...,fill=TRUE)
do.call(goo,sapply(c("a","b"),function(x) eval(parse(text=x))))
它完成了工作,但我在想是否没有更聪明的方法来构造 do.call() 调用。
【问题讨论】:
-
“重复”没有考虑到数据表有不同的列(只是为了让潜在的未来用户清楚)。
标签: r data.table do.call