我有两个data.tables DT1
和DT2
。我想执行DT1 = DT1[DT2]
而不复制data.table。
更具体地说,我正在尝试通过添加匹配的DT1
中的列来更新DT2
的子集。没有匹配的行的默认输出NA
非常好(我想保留DT1
的所有行)。如果我使用相同的键正确地命令两个data.tables,DT1[DT2,c("col1","col2"):=list(DT2$col1,DT2$col2)]
有效(在我看过的情况下:即没有重复),但是对于许多列来说会变得乏味。
有一种简单的方法吗?
(merge-like scenario with two data.tables地址添加单个列而Merging two data.tables with many to one realtionship in R?无法解决内存效率问题。)
示例:
dt = data.table(col1 = 1:3)
dt2 = data.table(col1 = 2:5,col2 = 3:6,col3=c("a","b","c","d"))
setkey(dt,col1)
setkey(dt2,col1)
加入dt
和dt2
,将col2和col3添加到dt
,而不复制dt。