如何否定%in%运算符(或返回两组的补码)?

时间:2014-10-10 10:07:30

标签: r

我有两个列表或类似名单,我想在big_list中获取little_list的项目。

big_list  <- c(1,2,3,4,5)
little_list  <- c(2,4)
big_list[big_list %in% little_list] # this gives me the interection

但是我想要补码(big_list中不在little_list中的项目,即big_list\little_list)。

这不起作用

big_list[big_list ! %in% little_list]

这也不是

big_list[big_list %in% ! little_list]

我假设有一个我应该自己解决的答案?!

2 个答案:

答案 0 :(得分:3)

您可以在源文件或Rprofile中创建此功能,并在开始时加载它。非常方便。

'%!in%' <- function(x,y)!('%in%'(x,y))

然后你可以做

big_list[big_list %!in% little_list]

答案 1 :(得分:2)

setdiff(big_list, little_list)
 #[1] 1 3 5

或者

 big_list[!big_list %in% little_list]
 #[1] 1 3 5