有时,我有一个键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, ]
有我缺少的方法吗?另外,为什么第一个是错误的任何特定原因?语法对我来说似乎很清楚。
在撰写本文时,本机方法是:
dt[.(seq(1, 100, 2)) & var > 0, j] #some expression j
是以下内容:
dt[.(seq(1, 100, 2)), .SD[var > 0, j]]
我工作data.table
的越多,它就越自然,但是看起来还是有点不直观。这就是生活。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句