如何从多个向量中find共同的元素?

任何人都可以告诉我如何从多个向量find共同的元素?

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

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

可能有一个更聪明的方法去做这件事,但是

 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) 

更新编辑一个更简单的代码

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