我知道data.table
有这个功能:
DT[DT2, var := i.var, on='id']
其中 i.var 即DT2$var,用这种功能可以轻易将DT2中的var更新到DT的var。
这几天整理临床数据,想着怎么把新表的数据整个更新到旧表中(然而我不懂数据库的相关知识),一开始想着lapply, eval, sym
希望实现上述功能的批量化,没有成功。后来写了下面这行代码,居然成功了:
DT[DT2, names(DT2) := DT2, on= 'id']
而且DT2中如果存在DT中没有的变量,这一行代码也能够在DT中新建变量。
后来思考,on
位背后的逻辑,应该是类似match(var1,var)
实现对应,上述代码才能成为可能吧。
写完这行代码觉得挺满意的,和大家分享一下,继续临床搬砖了~