R for цикл перейти к следующей итерации ifelse

92

Предположим, у вас есть такой цикл for

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

Как перейти к следующей итерации, если выполняется определенное условие?

алки
источник
8
Вместо того, чтобы пропускать, когда условие выполняется, вы не должны пропускать, когда условие не выполняется -for(n in 1:5){if(n!=3){cat(n)}}
MichaelChirico

Ответы:

162
for(n in 1:5) {
  if(n==3) next # skip 3rd iteration and go to next iteration
  cat(n)
}
Алексей Ферапонтов
источник
5
Аккуратно. To OP: см. ?ControlАналогичные функции
MichaelChirico
действительно очень аккуратный ответ , что, если я хочу сделать что-то вроде for(n in 1:5) { if(n==3) print ('3rd iteration' ) next # skip 3rd iteration and go to next iteration cat(n) }значения, которое я хочу напечатать, что я собираюсь пропустить третью итерацию, потому что в некоторых случаях нам нужно записывать то, что мы пропустили, чтобы все было управляемым. любые мысли по этому поводу?
Джейсон Гол
1
@Jason Goal - вам понадобятся дополнительные скобки для ifутверждения, например, этоfor(n in 1:5) { if(n==3) { print ('3rd iteration' ) ; next } # skip 3rd iteration and go to next iteration cat(n) }
Алексей Ферапонтов
Спасибо @ Alexey Ferapontov, теперь я понимаю, почему в моей старой версии все время выскакивает ошибка «лишняя скобка».
Джейсон Гол