如何在变量定义的列上== 1

时间:2014-01-28 01:25:17

标签: r unique data.table

这是一个非常简单的问题,但我再次被data.table语法混淆了。

如果我有一个表示列名的字符串 - 例如column <- "x" - 如何只返回与该列上的逻辑条件匹配的行?

data.frame中,如果我想返回列x等于1的表格的所有行,我会写df[df[,column] == 1,]

如何在data.table中有效地写出来?

(注意,dt[x == 1]工作正常,但如果您使用类似column的字符串代表该列的名称,则不行。)

答案here已接近但似乎不足以回答这个问题。

2 个答案:

答案 0 :(得分:4)

dt[get(column) == 1]似乎有效 - 这是最有效的方法吗?

答案 1 :(得分:2)

这样做的一种方法:

dt[eval(as.name(column)) == 1, ]

请参阅1.6 of the FAQ部分,了解如何创建表达式并在dt的框架内对其进行评估(尽管常见问题解答在j的上下文中对其进行了解释,构建表达式并对其进行评估是在i的上下文中也有效,如上所示。