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

can*_*ine 5 r unique data.table

这是一个非常简单的问题,但我再次对data.table语法感到困惑.

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

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

我如何有效地写一个data.table

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

这里的答案很接近但似乎不足以回答这个问题.

can*_*ine 4

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

  • +1 就语法而言,这很好,是的。或者 `dt[ dt[[column]]==1 ]` 不太优雅。为了速度,也许`setkeyv(dt,column); dt[.(1)]`。但仅在单个列上,“setkey”的时间通常不值得,因为单个矢量扫描非常快。除非您多次查找,在这种情况下,即使只在一列上使用“setkey”也是值得的。 (4认同)
  • 这通常也是我使用的语法。 (2认同)