【发布时间】:2015-10-08 03:41:38
【问题描述】:
我使用它的次数越多,data.table 就越多地取代 dplyr 作为我的“goto”包,因为它提供的速度是一个很大的优势。
问题
您能否在不创建expression 的情况下将变量传递给data.table (dt[i,j]) 中的i?
示例
给定一个data.table:
library(data.table)
dt <- data.table(val1 = c(1,2,3),
val2 = c(3,2,1))
我想评估一下:
dt[(val1 > val2)]
但使用变量来引用列名。例如,
myCol <- c("val1", "val2") ## vector of column names
我读过lots of questions,其中显示了使用表达式执行此操作的方法:
## create an expression to evaluate
expr <- parse(text = paste0(myCol[1], " > ", myCol[2]))
## evaluate expression
dt[(eval(expr))]
val1 val2
1: 3 1
但我想知道是否有一种我错过的更“直接”的方法来做到这一点,类似于:
dt[(myCol[1] > myCol[2])]
或者expression 路由应该这样做吗?
【问题讨论】:
标签: r data.table