2012-10-12 120 views
6

Let tengo una matriz comopara() del ancho de paso de bucle

a <- seq(1, 100, 1) 

y quiero seleccionar sólo los elementos que se producen cada 3 pasos con un bucle for() a partir de la segunda, por ejemplo, 2, 5, 8, 11 y así sucesivamente.

¿Cómo debo usar for() en este caso?

b <- NULL 
# for(i in 1:length(a)) { # Is there any additional argument? 
    # b[i] <- a[...] # Or I can just multiply 'i' by some integer? 
# } 

Gracias,

+0

Usted DEBERÍAMOS utilizar un bucle para este – Dason

Respuesta

11

Uso 3 como valor para by en seq

for (i in seq(2, length(a), by=3)) {} 

> seq(2, 11, 3) 
[1] 2 5 8 11 
+0

estoy un poco confundido por diferentes idiomas, que estaba tratando algo como 'para (i en 1: longitud (a); i + 3) {} 'y cosas por el estilo :) –

+0

Si estás pensando así, vas a terminar con un código R muy ineficiente, incluso si sabes cómo hacerlo en R. Considera publicar una porción más grande de tu problema en otra pregunta, especialmente si el código parece correr lento. – John

3

qué utilizar for?

b <- a[seq(2,length(a),3)] 
+0

Mi error, en el problema original que quería resolver, no tuve más remedio que usar 'for()'; en el ejemplo SO no reproduje mi problema original, pero especifiqué que quería usar 'for()'. –

+1

Si realmente tiene que usar para(), aún necesita hacer que la cantidad de código en el bucle sea lo más pequeña posible. La selección de la secuencia en el ejemplo for() está fuera del ciclo. Deberías pensar así todo lo posible para optimizar tu código R. – John

Cuestiones relacionadas