R不在子集中

可能重复:
从数据框中删除多个元素的标准方法

我知道在R中,如果你正在寻找另一个组的子集或基于id的匹配,你会使用类似的东西

subset(df1, df1$id %in% idNums1) 

我的问题是如何做相反的事情,或者select不匹配一个ids向量的项目。

我试过使用! 但获取错误消息

 subset(df1, df1$id !%in% idNums1) 

我认为我的备份是这样做的:

 matches <- subset(df1, df1$id %in% idNums1) nonMatches <- df1[(-matches[,1]),] 

但我希望有一些更有效率的东西。

df1$id %in% idNums1的expression式df1$id %in% idNums1产生一个逻辑向量。 否定它,你需要否定整个向量:

 !(df1$id %in% idNums1)