2009-12-03 2 views

Répondre

83

vous pouvez utiliser la fonction setdiff() (différence de jeu):

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

Watchout: 'setdiff (x, y)' et 'setdiff (y, x)' ne sont pas les mêmes. –

44

Oui. Pour les vecteurs, vous pouvez simplement utiliser l'opérateur %in% ou la fonction is.element().

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

Pour une matrice, il existe de nombreuses approches de différence. merge() est probablement le plus simple. Je suggère looking at this question for that scenario.

20

Le fichier d'aide dans la recherche pour setdiff, union, intersect, setequal, and is.element fournit des informations sur les fonctions définies standards dans R.

setdiff(x, y) retourne les éléments de x qui ne sont pas dans y.

Comme indiqué ci-dessus, il s'agit d'une différence asymétrique. Ainsi, par exemple:

> 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

Presque aucune information. – ddunn801

+1

@ ddunn801 Je pense que c'est bon à savoir sur le fichier d'aide générale, mais j'ai ajouté un peu plus d'informations pour le rendre plus utile, espérons-le. –

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