web-dev-qa-db-fra.com

Sélectionnez tous les autres éléments d'un vecteur

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.

38
user1313954
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.

97
Sven Hohenstein
remove[seq(1,length(remove),2)]
17
Grega Kešpret

Juste une autre alternative:

> remove[seq_along(remove) %% 2 > 0]
[1] 17 19 24 30 44
9
Jilber Urbina