2012-02-06 3 views
9

Ho due vettori di caratteri, xey.Confronto di vettori di caratteri in R per trovare valori univoci e/o mancanti

x <- c("a", "b", "c", "d", "e", "f", "g") 
y <- c("a",  "c", "d", "e",  "g") 

I valori all'interno di x non si ripetono mai (vale a dire, sono tutti univoci). Lo stesso vale per il vettore y. La mia domanda è: come posso ottenere R per confrontare i due vettori e quindi dirmi quali elementi mancano di y rispetto a x? Altrimenti detto, voglio che R mi dica che "b" e "f" mancano da y.

(Nota, nei miei dati reali, xey contengono ciascuno alcune migliaia di osservazioni, motivo per cui mi piacerebbe farlo a livello di codice. Probabilmente c'è una risposta molto semplice, ma non sapevo cosa cercare per nei file della guida R).

Grazie a tutti coloro che possono aiutare!

+1

Questa domanda è molto simile a http://stackoverflow.com/questions/1837968/r-how-to-tell-what-is-in-one-vector -e-non-altro –

+0

Ci scusiamo per il post simile! Grazie per il collegamento a questo e grazie a tutti coloro che hanno fornito risposte. – Alexander

risposta

25
setdiff(x,y) 

Farà il lavoro per voi.

5

penso che questo dovrebbe funzionare:

x[!(x %in% y)] 

In primo luogo esso controlla per ogni x che non sono in Y, allora lo utilizza come un indice sull'originale.

8
> x[!x %in% y] 
[1] "b" "f" 

o:

> x[-match(y,x)] 
[1] "b" "f" 
>