这是一个非常简单的问题,但我再次被data.table
语法混淆了。
如果我有一个表示列名的字符串 - 例如column <- "x"
- 如何只返回与该列上的逻辑条件匹配的行?
在data.frame
中,如果我想返回列x
等于1
的表格的所有行,我会写df[df[,column] == 1,]
。
如何在data.table
中有效地写出来?
(注意,dt[x == 1]
工作正常,但如果您使用类似column
的字符串代表该列的名称,则不行。)
答案here已接近但似乎不足以回答这个问题。
答案 0 :(得分:4)
dt[get(column) == 1]
似乎有效 - 这是最有效的方法吗?
答案 1 :(得分:2)
这样做的一种方法:
dt[eval(as.name(column)) == 1, ]
请参阅1.6 of the FAQ部分,了解如何创建表达式并在dt
的框架内对其进行评估(尽管常见问题解答在j
的上下文中对其进行了解释,构建表达式并对其进行评估是在i
的上下文中也有效,如上所示。