seleccionar - Extrae cada enésimo elemento de un vector
seleccionar columnas en r (3)
Me gustaría crear un vector en el que cada elemento sea el elemento i+6th
de otro vector.
Por ejemplo, en un vector de longitud 120 quiero crear otro vector de longitud 20 en el que cada elemento sea el valor i, i+6, i+12, i+18...
del vector inicial, es decir, quiero extraer cada 6to elemento del original.
Creo que estás preguntando dos cosas que no son necesariamente las mismas
Quiero extraer cada 6º elemento del original
Puedes hacer esto indexando una secuencia:
foo <- 1:120
foo[1:20*6]
Me gustaría crear un vector en el que cada elemento sea el elemento i + 6º de otro vector.
Una manera fácil de hacerlo es complementar un factor lógico con FALSE hasta que 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
Otro truco para obtener piezas secuenciales (más allá de la solución seq ya mencionada) es usar un vector lógico corto y usar reciclaje de vectores:
foo[ c( rep(FALSE, 5), TRUE ) ]
a <- 1:120
b <- a[seq(1, length(a), 6)]