【发布时间】:2021-04-22 21:06:33
【问题描述】:
我想加入两个DT,假设一个key作为函数参数传递。
出了一个函数,运行良好,如下图:
DT1 = data.table(i=1:12, z=runif(12), toto=rep(1:3, each=4), tata=rep(21:23, each=4))
DT2 = data.table(j=1:3, num=1:3, crit=c('tata','toto','tutu'), nb=rnorm(3))
DT3 <- DT1[DT2[crit == 'toto'],
':=' (nb = nb),
on = c(toto = 'num')]
很遗憾,我无法用函数重现它:
foo <- function(dt1, dt2, var){
dt1[dt2[crit == var],
':=' (nb = nb),
on = (var = 'num')]
}
DT1 = data.table(i=1:12, z=runif(12), toto=rep(1:3, each=4), tata=rep(21:23, each=4))
DT2 = data.table(j=1:3, num=1:3, crit=c('tata','toto','tutu'), nb=rnorm(3))
DT4 <- foo(dt1 = DT1, dt2 = DT2, var = 'toto')
我尝试了诸如get(var) = 'num'之类的方法,但没有成功。
非常感谢您的帮助!
【问题讨论】:
标签: r function join data.table