Hoe vind je gemeenschappelijke elementen uit meerdere vectoren?

Kan iemand me vertellen hoe ik de gemeenschappelijke elementen van meerdere vectoren kan vinden?

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

Ik wil de gemeenschappelijke elementen uit de bovenstaande vectoren halen (bijvoorbeeld: 3 en 9)


Antwoord 1, autoriteit 100%

Er is misschien een slimmere manier om dit aan te pakken, maar

intersect(intersect(a,b),c)

zal het werk doen.

EDIT: slimmer en handiger als je veel argumenten hebt:

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

Antwoord 2, autoriteit 6%

Al een goed antwoord, maar er zijn een aantal andere manieren om dit te doen:

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

of,

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

U kunt de unique-aanroepen uiteraard weglaten als u weet dat er geen herhaalde waarden zijn binnen a, bof c.


Antwoord 3, autoriteit 3%

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)

BEWERKEN BIJWERKEN
Een eenvoudigere code

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

Other episodes