给出一个带有两个data.table的示例,每个仅具有一个列键,我想在x中找不到y中的键的逻辑向量,但是我无法猜测在data.table中做到这一点的最佳方法(使用data.table语义):
#given
x = data.table(n=1:10, key="n")
y = data.table(n=4:13, key="n")
#i need:
y$n %in% x$n # TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
这些是我的丑陋选择(除了上面的内容)
x[, .(n, dummy = n)][y, !is.na(dummy)]
y[, .(n, dummy = F)][x, dummy:=T][]
请注意:
x[y, 1]
几乎解决了我的问题,即使y
检索了x
中的所有键,不仅{无与伦比的。但是我没有找到任何支持此操作的文档。
预先感谢
编辑:
我还注意到data.table方法比%in%更快,因此我想利用这一点。
NA
答案 0 :(得分:1)
来自?"[.data.table"
:
高级:x的列现在可以使用 前缀x。在连接以引用x的过程中特别有用 加入列,否则它们将被我掩盖。例如,X [Y, 。(x.a-i.a,b),on =“ a”]。
所以
!is.na(x[y, x.n])
是答案
答案 1 :(得分:0)
如果您想要类似于@ r2evans所说的索引,只需使用%in%
和which
。也许是这样的:
which(x$n %in% y$n)