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?


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.