2012-04-23 17 views
16

Estoy intentando escribir un bucle que se incremente su valor por 2. El código equivalente es C esbucle en R con incrementos

for (i=0; i<=78; i=i+2) 

¿Cómo puedo lograr lo mismo en R?

+5

publique un ejemplo más completo ... en R es probable que en realidad no desee un bucle for. – John

Respuesta

38

Ver ?seq para más información:

for(i in seq(from=1, to=78, by=2)){ 
# stuff, such as 
    print(i) 
} 

o

for(i in seq(1, 78, 2)) 

P. S. Disculpe mi C ignorancia. Ahí, acabo de descubrirme a mí mismo.

Sin embargo, esta es una manera de hacer lo que quiera en R (consulte código actualizado)

EDITAR

Después de aprender un poco de cómo funciona C, parece que el ejemplo publicado en la pregunta itera sobre la siguiente secuencia: 0 2 4 6 8 ... 74 76 78.

Para replicar eso exactamente en R, comience en 0 en lugar de en 1, como se describe anteriormente.

seq(from=0, to=78, by=2) 
[1] 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 
[24] 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 
+3

@Probabilityman Probablemente valga la pena añadir que, a menudo, usar un 'for loop' no es necesario en R. Si proporciona un ejemplo más completo de su problema específico (o hace otra pregunta), es muy posible que' for loop' puede ser omitido por completo Por ejemplo, 'print (seq (1,72,2))' hace lo mismo que el código proporcionado por BenBarnes. – Justin

+0

... y @ el ejemplo de Justin es mucho más rápido. Busque en los internets "r for loops" para obtener más información. – BenBarnes

+0

@Justin, print (seq (1,72,2)) produce resultados diferentes. El ciclo imprime cada elemento como una tupla (en su propia línea). No es que esto sea preferible. Si el ciclo puede ser reemplazado por una operación vectorial (o aplicar), probablemente debería serlo. –

Cuestiones relacionadas