Je suis conscient que l'on peut fusionner (joindre) deux data.table
Avec la fonction merge
ou la fonction [.data.table
. Cependant, si j'ai dit 10, data.table
Et que je veux utiliser do.call
Pour les fusionner tous ensemble, y a-t-il une fonction qui ferait cela? Actuellement, je recourt à do.call(cbind, ...)
qui ne fonctionne que pour des cas très particuliers.
Pas sûr, mais peut-être (non testé):
Reduce(merge,list(DT1,DT2,DT3,...))
Pour étoffer la solution suggérée par @Henk dans les commentaires, voici comment l'utiliser pour sélectionner le all = TRUE
option dans une formulation concise:
MergedDT = Reduce(function(...) merge(..., all = TRUE), List_of_DTs)
La dernière version de data.table (1.10.5) a une syntaxe simple pour la jointure de table, qui peut également être chaînée.
set(DT1, key)
set(DT2, key)
...
set(DT10, key)
DT_cmb <- DT1[DT2,][DT3,]...[DT10,]