У меня есть два data.tables
, X (3m строк на ~ 500 столбцов) и Y (100 строк на два столбца).
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" )
Я хочу сделать левое внешнее соединение на X, что я могу сделать Y[X]
благодаря:
Но я хочу добавить новый столбец в X
без копирования X
(так как он огромен).
Очевидно, что-то вроде X <- Y[X]
работает, но если data.table
намного умнее, чем я даю ему кредит (и я даю ему кредит за довольно много коварства!), я считаю, что это копирует все X
.
X[ , z:= Y[X,z]$z ]
работает, но является kludgy и не масштабируется до более чем одного столбца.
Как сохранить результаты слияния обратно в сохраненную таблицу данных в эффективном (как с точки зрения копирования, так и с точки зрения времени программиста)?