这可能有点奇怪,但在我用于过滤的函数中使用data.table
时,我经常遇到这种情况。
想象一下,您有一个变量,其值要与data.table
的列进行比较并进行过滤。如果变量的名称与列的名称相同怎么办?
我尝试过的例子和事情:
DT <- data.table(mtcars)
cyl <- 4
# intended: filter rows where column "cyl" equals the value of variable cyl
# this does not work
DT[cyl == (cyl)]
# this does not work either
DT[cyl == `cyl`]
答案 0 :(得分:6)
Data.table在数据表本身的环境中运行,因此您可能需要指定从中获取值的位置
DT[cyl == get("cyl", envir = parent.frame())]
答案 1 :(得分:4)
只需指定范围界定:
DT[cyl == globalenv()$cyl]