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