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)?

questionAnswers(2)

yourAnswerToTheQuestion