Me gustaría crear un vector en el que cada elemento sea el i+6th
elemento 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 sexto elemento del original.
seq.int
es más rápido en microbenchmarks, pero sospecho que cualquier aumento en el rendimiento de un programa real se vería reducido por el tiempo de ejecución de otras partes.a = 1:120; b = [::6]
. Python no puede hacer lo primero, R no lo segundo.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 el reciclaje de vectores:
fuente
seq
debes poder invocarlength
el vector.letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
Creo que estás preguntando dos cosas que no son necesariamente lo mismo
Puede hacer esto indexando una secuencia:
Una manera fácil de hacer esto es complementar un factor lógico con FALSE hasta que
i+6
:fuente
foo[1:(i+6)!=(i+6)]
es decir , muestra todos los valores excepto el sexto.Para seleccionar cada enésimo elemento desde cualquier posición inicial en el vector
fuente