[英]subset data.table based on key being NOT an element of a list
我有以下 data.table:
DT = data.table(ID = c(1, 2, 4, 5, 10), A = c(13, 1, 13, 11, 12))
DT
ID A
1: 1 13
2: 2 1
3: 4 13
4: 5 11
5: 10 12
A 列的內容並不重要。 我有一個列表/向量test <- c(1, 5, 9, 10, 11, 12, ...)
,它可能比 data.table 長很多倍。 我想 select data.table DT
中的行,以便向量test
中不存在密鑰ID
:
ID A
2: 2 1
3: 4 13
我認為DT[!(ID %in% test)]
有效,但想利用 data.table 基於快速鍵的子集。 請注意,向量test
可能與DT
中的鍵沒有任何共同的元素,這將導致子集返回 data.table 本身,並且可能是所有鍵都存在於test
中,返回一個空的 data.table。 有什么建議么?
關於什么:
library(data.table)
DT <- data.table(ID = c(1, 2, 4, 5, 10), A = c(13, 1, 13, 11, 12))
test <- data.table(ID = c(1, 5, 9, 10, 11, 12))
setkey(test,ID)
DT[!test, on="ID"]
我們可以使用%in%
和否定( !
)
DT[!ID %in% test]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.