162 votes

Extraire chaque nième élément d'un vecteur

Je voudrais créer un vecteur dont chaque élément est le élément d’un autre vecteur. Par exemple, dans un vecteur de longueur 120 que je veux créer un autre vecteur de longueur 20 dans lequel chaque élément est la valeur du vecteur initial, c'est-à-dire je veux extraire chaque élément 6e de l’original.

202voto

nico Points 21115
a <- 1:120
b <- a[seq(1, length(a), 6)]

55voto

Greg Snow Points 22040

Une autre astuce pour obtenir des pièces séquentielles (au-delà de la solution de seq déjà mentionné) consiste à utiliser un vecteur logique court et utiliser le vecteur de recyclage :

30voto

Sacha Epskamp Points 14956

Je pense que vous demander deux choses qui ne sont pas nécessairement les mêmes

Je veux extraire tous les 6 élément de l'original

Vous pouvez le faire à l'indexation d'une séquence:

foo <- 1:120
foo[1:20*6]

Je voudrais créer un vecteur dans laquelle chaque élément est la i+6 élément d'un autre vecteur.

Un moyen facile de le faire est de compléter un facteur de logique avec des FALSEs jusqu' i+6:

foo <- 1:120
i <- 1
foo[1:(i+6)==(i+6)]
[1]   7  14  21  28  35  42  49  56  63  70  77  84  91  98 105 112 119

i <- 10
foo[1:(i+6)==(i+6)]
[1]  16  32  48  64  80  96 112

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X