我有两个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]
要归功于:
为什么 data.tables 的 X[Y] 连接不允许完全外连接或左连接?
但我想在X
不复制X
的情况下添加新列(因为它很大)。
显然,类似X <- Y[X]
作品的东西,但除非data.table
比我认为的要聪明得多(而且我认为它有很多狡猾!),我相信这复制了整个X
.
X[ , z:= Y[X,z]$z ]
有效,但很笨拙,不能很好地扩展到一列以上。
如何以有效的方式(在副本和程序员时间方面)将合并的结果存储回保留的 data.table 中?