Я знаю, что можно объединить (объединить) два data.table
с функцией merge
или функцией [.data.table
. Однако, если я скажу 10, data.table
и захочу использовать do.call
, чтобы объединить их все вместе, есть ли функция, которая будет делать это? В настоящее время я прибегаю к do.call(cbind, ...)
, который работает только для очень особых случаев.
Объединение нескольких data.tables
Ответ 1
Не уверен, но возможно (непроверенный):
Reduce(merge,list(DT1,DT2,DT3,...))
Ответ 2
Чтобы сформулировать решение, предложенное @Henk в комментариях, вот как это сделать, чтобы выбрать опцию all = TRUE
в краткой формулировке:
MergedDT = Reduce(function(...) merge(..., all = TRUE), List_of_DTs)
Ответ 3
Последняя версия data.table(1.10.5) имеет простой синтаксис для объединения таблиц, который также может быть скован.
set(DT1, key)
set(DT2, key)
...
set(DT10, key)
DT_cmb <- DT1[DT2,][DT3,]...[DT10,]