data.table join, em seguida, adicione colunas ao data.frame existente sem re-copy

Eu tenho doisdata.tables, X (linhas de 3m por ~ 500 colunas) e Y (100 linhas por duas colunas).

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

Eu quero fazer uma junção externa esquerda no X, que eu posso fazerY[X] graças a:

Por que X [Y] join de data.tables não permite uma junção externa completa ou uma junção esquerda?

Mas eu quero adicionar a nova coluna paraX sem copiandoX (desde que é enorme).

Obviamente, algo comoX <- Y[X] funciona, mas a menosdata.table é muito mais inteligente do que eu lhe dou crédito (e eu dou crédito a ela por muita desonestidade!), eu acredito que isso copia o todo deX.

X[ , z:= Y[X,z]$z ] funciona, mas é kludgy e não se adapta bem a mais de uma coluna.

Como faço para armazenar os resultados de uma mesclagem de volta para os dados retidos? De maneira eficiente (tanto em termos de cópias quanto em termos de tempo do programador)?

questionAnswers(2)

yourAnswerToTheQuestion