web-dev-qa-db-fra.com

Fusion de plusieurs data.tables

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.

38
Alex

Pas sûr, mais peut-être (non testé):

Reduce(merge,list(DT1,DT2,DT3,...))
48
Matt Dowle

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)
23
Michael Ohlrogge

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,]
7
HappyCoding