如何使用第 i 个位置的变量来过滤行
How to use a variable in the i position to filter rows
示例数据
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)
正如大卫在评论中指出的那样,您可以使用
d[get(my.column) < 3]
我个人更喜欢的另一种方法是为 i
构建调用而不是获取变量:
d[eval(as.name(my.column)) < 3]
不确定在 i
中使用时的性能。如果在 j
arg 中使用,我相信 eval(as.name(
会稍微快一些——取决于 AFAIK 的列数。
示例数据
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)
正如大卫在评论中指出的那样,您可以使用
d[get(my.column) < 3]
我个人更喜欢的另一种方法是为 i
构建调用而不是获取变量:
d[eval(as.name(my.column)) < 3]
不确定在 i
中使用时的性能。如果在 j
arg 中使用,我相信 eval(as.name(
会稍微快一些——取决于 AFAIK 的列数。