I ont une liste:Comment puis-je supprimer les valeurs partagées à partir d'une liste des vecteurs
x <- list("a" = c(1:6,32,24) , "b" = c(1:4,8,10,12,13,17,24),
"F" = c(1:5,9:15,17,18,19,20,32))
x
$a
[1] 1 2 3 4 5 6 32 24
$b
[1] 1 2 3 4 8 10 12 13 17,24
$F
[1] 1 2 3 4 5 9 10 11 12 13 14 15 17 18 19 20 32
Chaque vecteur dans la liste partage un certain nombre d'éléments avec les autres. Comment puis-je supprimer des valeurs partagées pour obtenir le résultat suivant?
$a
[1] 1 2 3 4 5 6 32 24
$b
[1] 8 10 12 13 17
$F
[1] 9 11 14 15 18 19 20
Comme vous pouvez le voir: le premier vecteur ne change pas. Les éléments partagés entre les premier et second vecteurs seront supprimés du deuxième vecteur, puis nous supprimerons les éléments partagés des troisièmes vecteurs après les avoir comparés avec les premier et second vecteurs. La cible de cette tâche est le groupe de données en cluster (l'ensemble de données d'origine contient 590 objets).
x_rev <- rev (x); lapply (seq_along (x), fonction (y) Reduce (setdiff, x_rev [seq (y)])) ... donnera un résultat différent, en ce qui concerne votre commentaire. +1 de toute façon. Votre solution est une vraie beauté. –
Merci, James pour votre réponse, cela fonctionne parfaitement. – Noor
@AndreElrico Bon point, il faut faire attention à l'indexation. Je pense que 'tail (x_rev, y)' fonctionnerait mieux. – James