有时候,我有一个键控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, ]
我缺少一种方法吗?还有,第一个是错误的任何特殊原因?语法对我来说似乎很清楚。
答案 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。