如何查找一个向量中不在另一个向量中的元素(不使用setdiff)

Sar*_*ina 2 r set-difference

我有两个向量

x <- c(1,2,2,3,4)

y <- c(1,2,3)
Run Code Online (Sandbox Code Playgroud)

而且我想获得x中不在y中的元素的另一个向量;因此在这种情况下(2,4)。

我已经尝试过使用setdiff()函数,但这没有考虑重复项(它只会返回4),因此我不确定该如何处理。

谢谢!

jor*_*ran 5

也许试试这个:

x[-match(y,x,nomatch = 0)]
Run Code Online (Sandbox Code Playgroud)

nomatch = 0,以避免与负下标混合的NA是必要的。

如注释中所述,要处理其他重复项,另一个选项可能是vsetdiffvecsets包中使用

library(vecsets)
x = c(1, 2, 2, 3, 3, 4)
y = c(1, 2, 2, 3)
> vsetdiff(x,y)
[1] 3 4
Run Code Online (Sandbox Code Playgroud)