如何在i位置使用变量来过滤行

时间:2015-08-30 02:05:28

标签: r data.table

示例数据

d<-data.table(a=c(1,2,3,4,5))

我想要这个结果:

d[a < 3]

如何实现相同的使用my.column

my.column<-'a'
d[my.column < 3]
#Empty data.table (0 rows) of 1 col: a

虽然以下有效,但我希望有更好的方法:

setnames(d,my.column,"my.column")
d[my.column<3,]
setnames(d,'my.column',my.column)

请注意,这也不起作用

setkey(d,my.column)

1 个答案:

答案 0 :(得分:0)

大卫在评论中指出你可以使用

d[get(my.column) < 3]

我个人更喜欢的另一种方式是建立对i的调用,而不是获取变量:

d[eval(as.name(my.column)) < 3]

i中使用时不确定效果。如果在j arg中使用,我相信eval(as.name(会略微加快 - 取决于AFAIK列的数量。