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?


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)
}

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.