R pour la boucle passe à l'itération suivante sinon

90

Supposons que vous ayez une boucle for comme ça

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

Comment passer à l'itération suivante si une certaine condition est remplie?

alki
la source
8
Au lieu de sauter lorsqu'une condition est remplie, vous ne devriez pas sauter lorsqu'une condition n'est pas remplie -for(n in 1:5){if(n!=3){cat(n)}}
MichaelChirico

Réponses:

157
for(n in 1:5) {
  if(n==3) next # skip 3rd iteration and go to next iteration
  cat(n)
}
Alexey Ferapontov
la source
5
Soigné. Pour OP: voir ?Controlpour des fonctionnalités similaires
MichaelChirico
réponse très soignée en effet , et si je veux faire quelque chose comme for(n in 1:5) { if(n==3) print ('3rd iteration' ) next # skip 3rd iteration and go to next iteration cat(n) }signifiant que je veux imprimer que je vais sauter la 3e itération, car dans certains cas, nous devons enregistrer ce que nous avons sauté pour garder les choses traitables.
Jason Goal
1
@Jason Goal - vous aurez besoin de crochets supplémentaires pour la ifdéclaration, comme cecifor(n in 1:5) { if(n==3) { print ('3rd iteration' ) ; next } # skip 3rd iteration and go to next iteration cat(n) }
Alexey Ferapontov
Merci @ Alexey Ferapontov, maintenant je vois pourquoi l'erreur «support supplémentaire» continue à apparaître dans mon ancienne version.
Jason Goal