如何从多个向量中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)]
如果知道a
, b
或c
中没有重复的值,那么显然可以忽略这些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)