在data.table中结合向量和二进制搜索

时间:2015-05-14 01:00:56

标签: r data.table

有时候,我有一个键控data.table,我想根据其键一个未键入的列进行分组。最简单/最快的方法是什么?

最自然的是错误:

dt <- data.table(id = 1:100, var = rnorm(100), key = "id")
dt[.(seq(1, 100, 2)) & var > 0, ]

下一个最干净的事情是链:

dt[.(seq(1, 100, 2))][var > 0, ]

当然,我们可以完全放弃二元搜索(我认为这显然是可以避免的):

dt[id %in% seq(1, 100, 2) & var > 0, ]

我缺少一种方法吗?还有,第一个是错误的任何特殊原因?语法对我来说似乎很清楚。

1 个答案:

答案 0 :(得分:0)

在撰写本文时,采用本机方式:

dt[.(seq(1, 100, 2)) & var > 0, j] #some expression j

如下:

dt[.(seq(1, 100, 2)), .SD[var > 0, j]]

我使用data.table的次数越多,这就越自然,但它看起来仍然有点不直观。 C'est la vie。