data.table join, a następnie dodaj kolumny do istniejącej data.frame bez ponownego kopiowania
mam dwadata.tables
, X (3 m wierszy po ~ 500 kolumnach) i Y (100 wierszy po dwóch kolumnach).
set.seed(1)
X <- data.table( a=letters, b=letters, c=letters, g=sample(c(1:5,7),length(letters),replace=TRUE), key="g" )
Y <- data.table( z=runif(6), g=1:6, key="g" )
Chcę zrobić lewe zewnętrzne sprzężenie na X, które mogę zrobićY[X]
dzięki:
Dlaczego X [Y] łączy dane.tables nie pozwala na pełne sprzężenie zewnętrzne lub łączenie lewe?
Ale chcę dodać nową kolumnę doX
bez biurowyX
(ponieważ jest ogromny).
Oczywiście coś w tym styluX <- Y[X]
działa, ale chybadata.table
jest o wiele mądrzejszy niż to, za co mu to przypisuję (i przyznaję to za całkiem sprytny przebieg!), wierzę, że to kopiuje całośćX
.
X[ , z:= Y[X,z]$z ]
działa, ale jest niepewny i nie skaluje się dobrze do więcej niż jednej kolumny.
Jak przechowywać wyniki scalania z powrotem w zachowanych danych.tabela w sposób efektywny (zarówno pod względem liczby kopii, jak i czasu programisty)?