Ich frage mich, ob es eine Speicher effiziente Möglichkeit gibt, n data.tables (oder Datenrahmen) beizutreten. wenn ich die folgenden 4 data.tables Zum Beispiel haben:Effizient verbinden mehr als 2 data.tables
df1 = data.table(group = c(1L,2L,3L),value = rnorm(3),key = "group")
df2 = data.table(group = c(2L,1L,3L),value2 = rnorm(3),key = "group")
df3 = data.table(group = c(3L,2L,1L),value3 = rnorm(3),key = "group")
df4 = data.table(group = c(1L,3L,2L),value4 = rnorm(3),key = "group")
Ich konnte sie wie so zusammen:
merge(df1,merge(df2,merge(df3,df4)))
aber das scheint nicht wie eine optimale Lösung. Ich könnte möglicherweise viele data.tables haben, die zusammengeführt werden müssen. Gibt es eine Möglichkeit, das oben Genannte zu verallgemeinern, ohne jede nachfolgende Zusammenführung in den Speicher zu kopieren? Gibt es einen bereits akzeptierten Weg außerhalb der data.table um dies zu tun?
Eine Lösung ist, alle Datenrahmen in einer Liste zu setzen, verwenden Sie dann 'Reduce()' ihnen zu verschmelzen. Siehe http://stackoverflow.com/questions/8091303/simultously-merge-multiple-data-frames-in-a-list – ulfelder
'Reduce (Funktion (x, y) x [y], Liste (df1, df2, df3 , df4)) scheint auf den von Ihnen bereitgestellten Daten ein wenig schneller zu sein, aber Sie müssten dies an größeren Eingängen testen, um zu sehen, wie es skaliert. – nrussell
@ullinder Das ist nur semantischer Zucker. Die gleichen Zusammenführungsoperationen werden stattfinden. –