我越来越喜欢使用data.table
,它正在取代dplyr
成为我的“首选”包,因为它提供的速度是一个很大的优势。
问题
在data.table
中(dt[i,j]
),是否可以直接传递变量给i
,而不必创建一个expression
?
示例
给定一个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
我已经阅读了很多关于使用表达式实现此目的的问题:
## 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])]
还是使用表达式
的方式来完成这个任务?
eval(as.name(...)) == get()
是正确的吗? - tospig