如何从多个向量中找到公共元素?

谁能告诉我如何从多个向量中找到公共元素?

a <- c(1,3,5,7,9)
b <- c(3,6,8,9,10)
c <- c(2,3,4,5,7,9)

我想从上面的向量(例如:3和9)中得到公共元素

254559 次浏览

也许还有更聪明的办法,但是

intersect(intersect(a,b),c)

会完成任务的。

编辑:更聪明,更方便,如果你有很多论点:

Reduce(intersect, list(a,b,c))

这已经是一个很好的答案了,但还有其他几种方法可以做到这一点:

unique(c[c%in%a[a%in%b]])

或者,

tst <- c(unique(a),unique(b),unique(c))
tst <- tst[duplicated(tst)]
tst[duplicated(tst)]

如果你知道在abc中没有重复的值,你显然可以省略unique调用。

intersect_all <- function(a,b,...){
all_data <- c(a,b,...)
require(plyr)
count_data<- length(list(a,b,...))
freq_dist <- count(all_data)
intersect_data <- freq_dist[which(freq_dist$freq==count_data),"x"]
intersect_data
}




intersect_all(a,b,c)
< p >编辑更新 一个更简单的代码

intersect_all <- function(a,b,...){
Reduce(intersect, list(a,b,...))
}


intersect_all(a,b,c)