Come trovare elementi comuni da più vettori?

Qualcuno può dirmi come trovare gli elementi comuni da più vettori?

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

Voglio ottenere gli elementi comuni dai vettori sopra (es: 3 e 9)

Potrebbe esserci un modo più intelligente per farlo, ma

 intersect(intersect(a,b),c) 

farà il lavoro

EDIT: più intelligente e più conveniente se hai molti argomenti:

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

Una buona risposta già, ma ci sono un paio di altri modi per farlo:

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

o,

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

Ovviamente puoi omettere le chiamate unique se sai che non ci sono valori ripetuti all'interno di a , c .

 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) 

AGGIORNA MODIFICA Un codice più semplice

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