R 不同向量中的公共和唯一元素

R 不同向量中的公共和唯一元素,r,R,我有两个字符串向量,我想返回向量a和向量b的共同点和唯一点 a<- letters[seq( from = 1, to = 10 )] b<- letters[seq( from = 6, to = 15 )] common = "f" "g" "h" "i" "j" unique_a = "a" "b" "c" "d" "e" unique_b = "k" "l" "m" "n" "o" a正如@David Arenburg在评论中已经提到的,您可以使用base-R中的in

我有两个字符串向量,我想返回向量a和向量b的共同点和唯一点

a<- letters[seq( from = 1, to = 10 )]
b<- letters[seq( from = 6, to = 15 )]

common =  "f" "g" "h" "i" "j"
unique_a = "a" "b" "c" "d" "e" 
unique_b = "k" "l" "m" "n" "o"

a正如@David Arenburg在评论中已经提到的,您可以使用
base
-R中的
intersect
setdiff

> a<- letters[seq( from = 1, to = 10 )]
> b<- letters[seq( from = 6, to = 15 )]
> a
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
> b
 [1] "f" "g" "h" "i" "j" "k" "l" "m" "n" "o"
> intersect(a, b)
[1] "f" "g" "h" "i" "j"
> setdiff(a, b)
[1] "a" "b" "c" "d" "e"
> setdiff(b, a)
[1] "k" "l" "m" "n" "o"
>a b a
[1] “a”“b”“c”“d”“e”“f”“g”“h”“i”“j”
>b
[1] “f”“g”“h”“i”“j”“k”“l”“m”“n”“o”
>相交(a,b)
[1] f“g”h“i”j
>setdiff(a,b)
[1] “a”“b”“c”“d”“e”
>setdiff(b,a)
[1] “k”“l”“m”“n”“o”
常见元素:

a[a %in% b] # or b[b %in% a]
[1] "f" "g" "h" "i" "j"
独特于:

a[!a %in% b] # or a[b %in% a]
[1] "a" "b" "c" "d" "e"
b独有的:

b[!b %in% a] # or b[a %in% b]
[1] "k" "l" "m" "n" "o"
注释

值得指出的是,
intersect
setdiff
将丢弃参数中的任何重复值。而%
中的
%将保留重复项。因此,如果我们有重复的值,我们将得到不同的结果。例如,在向量a中生成重复元素a

a <- c(a, "a")
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "a"
# Duplicated element a is discarded
setdiff(a, b)
[1] "a" "b" "c" "d" "e"
# Keeps duplicated element a
a[!a %in% b]
[1] "a" "b" "c" "d" "e" "a"

a
intersect(a,b);setdiff(a,b);setdiff(b,a)
Nice-copy-paste-thereWell注释不用于回答。你为什么不回答这个问题?这可能会阻止那些需要答案的人去研究这个问题。是的,但是没有任何参考资料而偷偷摸摸地复制/粘贴是很不礼貌的。这并不是说我自己不知道答案。我只是不明白为什么这么多人在评论中回答问题,而留下这么多“未回答”的问题。我经常筛选未回答的问题,看看我能回答哪些问题,我不明白为什么即使有人已经将答案作为评论发布,我也不应该发布答案,因为这叫做剽窃。看这里