Disons que j'avais un vecteur:
remove <- c(17, 18, 19, 20, 24, 25, 30, 31, 44, 45)
.
Comment sélectionner/extraire chaque seconde valeur dans le vecteur? Comme ça: 17, 19, 24, 30, 44
J'essaie d'utiliser la fonction seq
: seq(remove, 2)
mais cela ne fonctionne pas tout à fait.
Toute aide est grandement appréciée.
remove[c(TRUE, FALSE)]
fera l'affaire.
Comment ça marche?
Si des vecteurs logiques sont utilisés pour l'indexation dans R, leurs valeurs sont recyclées si le vecteur d'index est plus court que le vecteur contenant les valeurs.
Ici, le vecteur remove
contient dix valeurs. Si le vecteur d'index c(TRUE, FALSE)
est utilisé, la commande réelle est: remove[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)]
Par conséquent, toutes les valeurs avec des numéros d'index impairs sont sélectionnées.
remove[seq(1,length(remove),2)]
Juste une autre alternative:
> remove[seq_along(remove) %% 2 > 0]
[1] 17 19 24 30 44