Comment supprimer des éléments répétés dans un vecteur, similaire à 'set' en Python
3 réponses
Cela fait la même chose. Plus lent, mais utile si vous voulez aussi un vecteur logique des doublons:
v[duplicated(v)]
10
répondu
dardisco
2013-08-22 01:55:12
pour supprimer les éléments dupliqués contigus seulement, vous pouvez comparer le vecteur avec une version décalée de lui-même:
v <- c(1, 1, 5, 5, 5, 5, 2, 2, 6, 6, 1, 3, 3)
v[c(TRUE, !v[-length(v)] == v[-1])]
[1] 1 5 2 6 1 3
la même chose peut être écrite un peu plus élégamment en utilisant dplyr:
library(dplyr)
v[v != lag(v)]
[1] NA 5 2 6 1 3
NA retournée par lag()
supprime la première valeur, de garder à la première valeur, vous pouvez modifier la valeur par défaut à une valeur qui sera différente de la première valeur.
v[v != lag(v, default = !v[1])]
[1] 1 5 2 6 1 3
0
répondu
Paul Rougieux
2018-08-23 09:42:38