是否可以以R中的变量形式在data.table中的列名上传递列名

我正在尝试对data.table执行非等额联接,如下所示:

A <- data.table(p = c(10, 20, 30), q = c(15, 25, 35), r = c(0, 0, 0))
B <- data.table(x = c(5, 15), y = c(10, 20), z = c(1, 2))

这有效:

A[B, on = .(p >= x, p < y), r := r + z]

这不起作用:

col_var <- "p"
A[B, on = .(col_var >= x, col_var < y), r := r + z]
or
A[B, on = .(.(col_var) >= x, .(col_var) < y), r := r + z]

我正在尝试实现以下目标:

col_var <- c("p", "q")
for(i in col_var)
{
  A[B, on = .(.(i) >= x, .(i) < y), r := r + z]
}

当我直接使用p而不是col_var时,我可以得到结果,但是我需要使用for循环,这需要我将列名称存储在变量中。有没有一种方法可以使用存储在变量中的列名?

PS:我尝试使用。(col_var),但出现错误“指定列的参数指定不存在的列”

评论