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?


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.