Estrai ogni ennesimo elemento di un vettore

Mi piacerebbe creare un vettore in cui ogni elemento è l’elemento i+6th di un altro vettore.

Ad esempio, in un vettore di lunghezza 120 voglio creare un altro vettore di lunghezza 20 in cui ogni elemento è il valore i, i+6, i+12, i+18... del vettore iniziale, cioè voglio estrarre ogni 6 ° elemento dell’originale.

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

Un altro trucco per ottenere pezzi sequenziali (oltre alla soluzione seq già menzionata) è usare un breve vettore logico e utilizzare il riciclo vettoriale:

 foo[ c( rep(FALSE, 5), TRUE ) ] 

Penso che tu stia chiedendo due cose che non sono necessariamente uguali

Voglio estrarre ogni sesto elemento dell’originale

Puoi farlo indicizzando una sequenza:

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

Mi piacerebbe creare un vettore in cui ogni elemento è l'elemento i + 6th di un altro vettore.

Un modo semplice per farlo è integrare un fattore logico con FALSE fino a quando 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