合并多个data.tables

Ale*_*lex 37 merge join r data.table

我知道一个可以合并(加入)两大data.table争夺的merge功能或[.data.table功能.但是,如果我说10,data.tables并且想要do.call将它们全部合并在一起,是否有一个功能可以做到这一点?目前我do.call(cbind, ...)只使用非常特殊的情况.

Mat*_*wle 47

不确定,但也许(未经测试):

Reduce(merge,list(DT1,DT2,DT3,...))
Run Code Online (Sandbox Code Playgroud)

  • @sdaza嗯好问题.我只能认为目前是打造像`mymerge =功能(X,Y)merge.data.table(X,Y,所有= TRUE)`的包装和传递包装成`Reduce`代替,即`减少(mymerge ,列表(DT1,DT2,DT3,...))`. (5认同)
  • reduce解决方案效果很好,但我不知道如何指定all = TRUE.任何的想法? (3认同)
  • 如果你的`data.table`是unkeyed,那么包装器应该看起来像`function(x,y)x [y,on ="merge_column_name"]` (2认同)

Mic*_*gge 22

为了充实@Henk在评论中提出的解决方案,以下是如何使用它来all = TRUE以简洁的公式选择选项:

MergedDT = Reduce(function(...) merge(..., all = TRUE), List_of_DTs)
Run Code Online (Sandbox Code Playgroud)


Hap*_*ing 6

最新版本的data.table(1.10.5)具有表连接的简单语法,也可以链接.

 set(DT1, key)
 set(DT2, key) 
  ...
 set(DT10, key)

 DT_cmb <- DT1[DT2,][DT3,]...[DT10,]
Run Code Online (Sandbox Code Playgroud)