【发布时间】:2014-01-01 09:12:02
【问题描述】:
我有一个data.table,我想根据一些不等式标准进行过滤:
dt <- data.table(A=letters[1:3], B=2:4)
dt
# A B
# 1: a 2
# 2: b 3
# 3: c 4
dt[B>2]
# A B
# 1: b 3
# 2: c 4
以上作为矢量扫描解决方案效果很好。但我不知道如何将它与列的变量名结合起来:
mycol <- "B"
dt[mycol > 2]
# A B // Nothing has changed
# 1: a 2
# 2: b 3
# 3: c 4
我该如何解决这个问题?我知道我可以通过使用setkeyv(dt, mycol) 设置键来使用二进制搜索,但我看不到基于某些不等式标准进行二进制搜索的方法。
【问题讨论】:
-
get(mycol)工作吗? -
@CarlWitthoft 是的。那将是我缺少的功能...
-
如果您愿意,您可以继续发布作为答案。
-
这也可以
dt[eval(parse(text=mycol)) > 2] -
@digEmAll 使用
eval(parse())严格按照fortune(106)禁止
标签: r data.table inequality