2012-02-06 25 views
9

Tengo dos vectores de caracteres, xey.Comparación de vectores de caracteres en R para encontrar valores únicos y/o faltantes

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

Los valores dentro de x no se repiten nunca (es decir, son únicos). Lo mismo aplica para el vector y. Mi pregunta es, ¿cómo puedo hacer que R compare los dos vectores y luego decirme qué elementos faltan en y con respecto a x? De lo contrario, quiero que R me diga que "b" y "f" faltan en y.

(Tenga en cuenta que en mis datos reales, xey contienen cada uno miles de observaciones, por lo que me gustaría hacer esto programáticamente. Es probable que haya una respuesta muy simple, pero no estaba seguro de qué buscar para en los archivos de ayuda R).

¡Gracias a todos los que pueden ayudar!

+1

Esta pregunta es muy similar a http://stackoverflow.com/questions/1837968/r-how-to-tell-what-is-in-one-vector -y-no-otro –

+0

¡Perdón por la publicación similar! Gracias por vincular esto y gracias a todos los que dieron respuestas. – Alexander

Respuesta

25
setdiff(x,y) 

Hará el trabajo por usted.

5

creo que esto debería funcionar:

x[!(x %in% y)] 

En primer lugar se comprueba para todo x que no están en y, a continuación, se usa como un índice en el original.

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

o:

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