簡體   English   中英

子集 data.table 基於鍵不是列表的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM