R für Schleife zur nächsten Iteration springen ifelse

90

Angenommen, Sie haben eine for-Schleife wie diese

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

Wie würde man zur nächsten Iteration springen, wenn eine bestimmte Bedingung erfüllt ist?

alki
quelle
7
Anstatt zu überspringen, wenn eine Bedingung erfüllt ist, sollten Sie nicht überspringen, wenn eine Bedingung nicht erfüllt ist -for(n in 1:5){if(n!=3){cat(n)}}
MichaelChirico

Antworten:

157
for(n in 1:5) {
  if(n==3) next # skip 3rd iteration and go to next iteration
  cat(n)
}
Alexey Ferapontov
quelle
5
Ordentlich. Zu OP: siehe ?Controlfür ähnliche Funktionen
MichaelChirico
Sehr nette Antwort in der Tat: Was ist, wenn ich etwas tun möchte, was for(n in 1:5) { if(n==3) print ('3rd iteration' ) next # skip 3rd iteration and go to next iteration cat(n) }bedeutet, dass ich drucken möchte, dass ich die dritte Iteration überspringen werde, weil wir in einigen Fällen aufzeichnen müssen, was wir übersprungen haben, um die Dinge nachvollziehbar zu halten.
Jason Goal
1
@ Jason Goal - Sie benötigen zusätzliche Klammern für die ifAussage, wie diesefor(n in 1:5) { if(n==3) { print ('3rd iteration' ) ; next } # skip 3rd iteration and go to next iteration cat(n) }
Alexey Ferapontov
Danke @ Alexey Ferapontov, jetzt sehe ich, warum der Fehler "Extra Bracket" bei meiner alten Version immer wieder auftaucht.
Jason Goal