我知道可以将两个data.table
与merge
函数或[.data.table
函数合并(加入)。但是,如果我说 10, data.table
s 并想用来do.call
将它们合并在一起,是否有一个函数可以做到这一点?目前我求助于do.call(cbind, ...)
仅适用于非常特殊的情况。
问问题
32660 次
4 回答
60
不确定,但也许(未经测试):
Reduce(merge,list(DT1,DT2,DT3,...))
于 2012-11-07T16:47:42.370 回答
35
为了充实@Henk 在评论中建议的解决方案,以下是如何使用它以all = TRUE
简洁的方式选择选项:
MergedDT = Reduce(function(...) merge(..., all = TRUE), List_of_DTs)
于 2016-09-18T18:14:34.287 回答
7
最新版本的 data.table (1.10.5) 有一个简单的表连接语法,也可以链式连接。
set(DT1, key)
set(DT2, key)
...
set(DT10, key)
DT_cmb <- DT1[DT2,][DT3,]...[DT10,]
于 2017-06-22T07:27:58.663 回答
0
对于 Michael Ohlrogge 的新回答,我在这里创建了一个函数来执行此任务。您可以从以下继承更多参数merge.data.table()
mergeDTs <- function(dt_list, by = NULL, sort = FALSE) {
Reduce(
function(...) {
merge(..., by = by, all = TRUE, sort = sort)
}, dt_list)
}
于 2021-09-07T06:51:17.597 回答