我需要将一列添加到巨大的 data.table dt.1(来自查找表 dt.2)。可以这样做:
df.1 <- cbind(c(1,2,3,1,2,3,1,2,3),c(1,2,3,1,2,3,1,2,3),c(1,2,3,4,5,6,7,8,9))
colnames(df.1) <- c("ColA", "ColB", "ColC")
df.2 <- cbind(c(1,3),c(1,3),c(10,11))
colnames(df.2) <- c("ColA", "ColB", "ColD")
dt.1 <- data.table(df.1)
dt.2 <- data.table(df.2)
getAnotherColumn <- function() {
keycols <- c("ColA", "ColB")
setkeyv(dt.1, keycols)
setkeyv(dt.2, keycols)
dt.1 <- merge(dt.1, dt.2, all=TRUE)
dt.1 # Will print with ColA, ColB, ColC, and ColD. As needed.
}
getAnotherColumn()
dt.1 # Only ColA, ColB, and ColC are here. ColD is also needed.
问题是我必须在函数内部进行,所以在函数返回时,旧的 dt.1 仍然存在(没有新列 ColD)。
如何将列添加到 dt.1 而不是创建新的 dt.1?
由于 dt.1 很大,我不能制作它的“额外副本”。