比较R中的字符向量以查找唯一和/或缺失值

Ale*_*der 18 statistics coding-style r character-encoding

我有两个字符向量,x和y.

x <- c("a", "b", "c", "d", "e", "f", "g")
y <- c("a",      "c", "d", "e",      "g")
Run Code Online (Sandbox Code Playgroud)

x内的值不会重复(即它们都是唯一的).矢量y也是如此.我的问题是,如何让R比较两个向量,然后告诉我哪些元素相对于x缺少y?否则说明,我希望R告诉我y中缺少"b"和"f".

(注意,在我的实际数据中,x和y每个包含几千个观察,这就是我想以编程方式执行此操作的原因.可能有一个非常简单的答案,但我不确定在R中搜索什么帮助文件).

感谢任何能提供帮助的人!

sau*_*dic 37

setdiff(x,y)
Run Code Online (Sandbox Code Playgroud)

会为你做这份工作.

  • 值得注意的是,“setdiff(x,y)”与“setdiff(y,x)”不同。前者会告诉您“x”中哪些内容不在“y”中,而后者会告诉您“y”中哪些内容不在“x”中。 (2认同)

Jus*_*tin 10

> x[!x %in% y]
[1] "b" "f"
Run Code Online (Sandbox Code Playgroud)

要么:

> x[-match(y,x)]
[1] "b" "f"
> 
Run Code Online (Sandbox Code Playgroud)


nog*_*pes 6

我认为这应该有效:

x[!(x %in% y)]
Run Code Online (Sandbox Code Playgroud)

首先,它检查所有不在y中的x,然后将其用作原始索引.