2009-12-03 8 views

Respuesta

83

puede utilizar el setdiff() (diferencia de conjuntos) Función:

> setdiff(x, y) 
[1] 1 
+14

Watchout: 'setdiff (x, y)' y 'setdiff (y, x)' no son lo mismo. –

44

Sí. Para vectores puede simplemente usar el operador %in% o la función is.element().

> x[!(x %in% y)] 
1 

Para una matriz, hay muchos enfoques diferentes. merge() es probablemente el más directo. Sugiero looking at this question for that scenario.

20

El archivo de ayuda en I para setdiff, union, intersect, setequal, and is.element proporciona información sobre las funciones estándar de conjuntos en R.

setdiff(x, y), devuelve los elementos de x que no están en y.

Como se indicó anteriormente, es una diferencia asimétrica. Así, por ejemplo:

> x <- c(1,2,3,4) 
> y <- c(2,3,4,5) 
> 
> setdiff(x, y) 
[1] 1 
> setdiff(y, x) 
[1] 5 
> union(setdiff(x, y), setdiff(y, x)) 
[1] 1 5 
+0

Casi no hay información. – ddunn801

+1

@ ddunn801 Creo que es bueno saber sobre el archivo de ayuda general, pero agregué un poco más de información para hacerlo más útil. –

12
x[is.na(match(x,y))] 
Cuestiones relacionadas