R dla pętli przeskakuje do następnej iteracji ifelse

92

Załóżmy, że masz taką pętlę for

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

Jak przejść do następnej iteracji, jeśli spełniony jest określony warunek?

alki
źródło
8
Zamiast pomijać, gdy warunek jest spełniony, nie powinieneś pomijać, gdy warunek nie jest spełniony -for(n in 1:5){if(n!=3){cat(n)}}
MichaelChirico

Odpowiedzi:

162
for(n in 1:5) {
  if(n==3) next # skip 3rd iteration and go to next iteration
  cat(n)
}
Alexey Ferapontov
źródło
5
Schludny. Do OP: zobacz ?Controlpodobne funkcje
MichaelChirico
naprawdę bardzo zgrabna odpowiedź , co jeśli chcę zrobić coś takiego jak for(n in 1:5) { if(n==3) print ('3rd iteration' ) next # skip 3rd iteration and go to next iteration cat(n) }znaczenie Chcę wydrukować, że pominę trzecią iterację, ponieważ w niektórych przypadkach musimy zapisać to, co pominęliśmy, aby wszystko było możliwe. jakieś przemyślenia na ten temat?
Jason Goal
1
@Jason Goal - będziesz potrzebować dodatkowych nawiasów na ifoświadczenie, w ten sposóbfor(n in 1:5) { if(n==3) { print ('3rd iteration' ) ; next } # skip 3rd iteration and go to next iteration cat(n) }
Alexey Ferapontov
Dzięki @ Alexey Ferapontov, teraz rozumiem, dlaczego błąd „dodatkowego nawiasu” ciągle pojawia się w mojej starej wersji.
Jason Goal