考虑
target <- "vs"
value <- 1
library(data.table)
dt <- as.data.table(head(mtcars))
Run Code Online (Sandbox Code Playgroud)
所以我试图将列名和值作为变量传递到环境中的j表达式中data.table,这相当于
dt[, vs == 1]
# [1] FALSE FALSE TRUE TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
如果只有值是变量,它可以很好地工作
dt[, vs == value]
# [1] FALSE FALSE TRUE TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
当它是变量时,我们也可以在data.table范围内调用该列
dt[, target, with = FALSE]
# vs
# 1: 0
# 2: 0
# 3: 1
# 4: 1
# 5: 0
# 6: 1
Run Code Online (Sandbox Code Playgroud)
但我无法想象如何以简单的方式将两者结合起来
注意:我很清楚我可以做到:
dt[[target]] == value
# [1] FALSE FALSE TRUE TRUE FALSE …Run Code Online (Sandbox Code Playgroud)