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

R 如何从多个向量中找到公共元素?,r,vector,r-faq,R,Vector,R Faq,有人能告诉我如何从多个向量中找到公共元素吗 a <- c(1,3,5,7,9) b <- c(3,6,8,9,10) c <- c(2,3,4,5,7,9) a也许有一个更聪明的方法来解决这个问题,但是 intersect(intersect(a,b),c) 我会做好的 编辑:如果您有很多论点,则更聪明、更方便: Reduce(intersect, list(a,b,c)) 这已经是一个很好的答案了,但是还有其他几种方法可以做到这一点: unique(c[c%in%a[a

有人能告诉我如何从多个向量中找到公共元素吗

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

a也许有一个更聪明的方法来解决这个问题,但是

intersect(intersect(a,b),c)
我会做好的

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

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

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

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


tst
intersect\u总之,使用
c
作为变量名不是一个好主意……为什么它是一个像其他字母一样的字母?@DimitriPetrenko,因为你可以用
c(1,2…
+1来声明列表,以提醒我们
Reduce
和正确的R大写!值得注意的是,
intersect
用于设置操作。如果向量中有重复出现的元素,则会丢失此信息,因为向量在相交之前已转换为集合。例如,
intersect(c(1,1,2,3),c(1,1,3,4))
会导致
c(1,3)
,你可能想要结果
c(1,1,3)
@GioraSimchoni如果这真的是你想要的,你怎么能得到c(1,1,3)?@StatsSorceress假设你想要由正整数组成的向量的“保持交集的副本”,全部在一个列表中L.以下代码起作用:
N我如何在单个数据框中的不同列中找到公共元素元素元素是数字元素我尝试了reduce函数没有输出我尝试了将它们转换为因子仍然没有答案,但如果我尝试一个,例如intersect(df$a,df$b)等工作…因为我总共有40列,做起来很麻烦…你能建议一些短一点的吗
tst <- c(unique(a),unique(b),unique(c))
tst <- tst[duplicated(tst)]
tst[duplicated(tst)]
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)