data.table:检索两个数据表之间的匹配键的逻辑向量

时间:2020-10-21 16:52:38

标签: r data.table

给出一个带有两个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

2 个答案:

答案 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)

相关问题