How to find common elements from multiple vectors?

后端 未结 3 539
挽巷
挽巷 2020-11-22 13:04

Can anyone tell me how to find the common elements from multiple vectors?

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

相关标签:
3条回答
  • 2020-11-22 13:28
    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)
    

    UPDATE EDIT A simpler code

    intersect_all <- function(a,b,...){
      Reduce(intersect, list(a,b,...))
    }
    
    intersect_all(a,b,c)
    
    0 讨论(0)
  • 2020-11-22 13:35

    There might be a cleverer way to go about this, but

    intersect(intersect(a,b),c)
    

    will do the job.

    EDIT: More cleverly, and more conveniently if you have a lot of arguments:

    Reduce(intersect, list(a,b,c))
    
    0 讨论(0)
  • 2020-11-22 13:40

    A good answer already, but there are a couple of other ways to do this:

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

    or,

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

    You can obviously omit the unique calls if you know that there are no repeated values within a, b or c.

    0 讨论(0)
提交回复
热议问题