我对在函数中联接两个data. table感兴趣。但是,当使用新的env
对data.table进行编程时,我无法在函数中联接data. table,因为我试图联接的参数不存在,例如,我得到了一个“参数指定列接收到不存在的列”的错误。我如何通过编程提供匹配的列来连接两个数据?我提供了一个令人惊讶的失败的最小工作示例。
dt.mwe.1 <- data.table(a = c(1,2,3,4,0,10))
mwe_function = function(dt, merge_var){
dt.internal =
data.table(z = min(dt):max(dt)) %>%
.[ , .(mv = z) , env = list(mv = merge_var)] %>% `[`
dt.internal2 =
data.table(z = min(dt):max(dt)) %>%
.[ , .(mv = z) , env = list(mv = merge_var)] %>% `[`
dt.internal
dt.internal[dt.internal2, on = .(mv),
env = list(mv = merge_var)] %>% `[`
}
# fails
mwe_function(dt = dt.mwe.1, merge_var = "a")
# also fails
mwe_function(dt = dt.mwe.1, merge_var = a)
1条答案
按热度按时间kpbwa7wx1#
也许我没理解你的意思,但是关于:
在
?data.table
的帮助下:所以我猜
env
方法对on
参数不起作用,但是它无论如何都接受字符串作为输入。