R para bucle pasar a la siguiente iteración si no

92

Suponga que tiene un bucle for así

for(n in 1:5) {
  #if(n=3) # skip 3rd iteration and go to next iteration
  cat(n)
}

¿Cómo se puede pasar a la siguiente iteración si se cumple una determinada condición?

alki
fuente
8
En lugar de saltar cuando se cumple una condición, debe se salte cuando se una condición no se cumple -for(n in 1:5){if(n!=3){cat(n)}}
MichaelChirico

Respuestas:

162
for(n in 1:5) {
  if(n==3) next # skip 3rd iteration and go to next iteration
  cat(n)
}
Alexey Ferapontov
fuente
5
Ordenado. Para OP: ver ?Controlcaracterísticas similares
MichaelChirico
De hecho, una respuesta muy clara, ¿qué pasa si quiero hacer algo como for(n in 1:5) { if(n==3) print ('3rd iteration' ) next # skip 3rd iteration and go to next iteration cat(n) }significar que quiero imprimir que voy a omitir la tercera iteración, porque en algunos casos necesitamos registrar lo que omitimos para mantener las cosas manejables? ¿Alguna idea sobre esto?
Jason Goal
1
@Jason Goal: necesitará corchetes adicionales para la ifdeclaración, como estafor(n in 1:5) { if(n==3) { print ('3rd iteration' ) ; next } # skip 3rd iteration and go to next iteration cat(n) }
Alexey Ferapontov
Gracias @ Alexey Ferapontov, ahora veo por qué sigue apareciendo el error de "corchete adicional" en mi versión anterior.
Jason Goal