R for loop pular para a próxima iteração se outra coisa

90

Suponha que você tenha um loop for assim

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

Como alguém pularia para a próxima iteração se uma certa condição fosse atendida?

Alki
fonte
8
Em vez de pular quando uma condição for atendida, você não deve pular quando uma condição não for atendida -for(n in 1:5){if(n!=3){cat(n)}}
MichaelChirico

Respostas:

157
for(n in 1:5) {
  if(n==3) next # skip 3rd iteration and go to next iteration
  cat(n)
}
Alexey Ferapontov
fonte
5
Arrumado. Para OP: ver ?Controlrecursos semelhantes
MichaelChirico
resposta muito legal, na verdade, e se eu quiser fazer algo como for(n in 1:5) { if(n==3) print ('3rd iteration' ) next # skip 3rd iteration and go to next iteration cat(n) }dizer que quero imprimir que vou pular a terceira iteração, porque em alguns casos precisamos registrar o que pulamos para manter as coisas tratáveis. alguma ideia sobre isso?
Jason Goal
1
@Jason Goal - você precisará de colchetes extras para a ifdeclaração, como estefor(n in 1:5) { if(n==3) { print ('3rd iteration' ) ; next } # skip 3rd iteration and go to next iteration cat(n) }
Alexey Ferapontov
Obrigado @Alexey Ferapontov, agora vejo porque o erro de 'colchete extra' continua aparecendo na minha versão antiga.
Jason Goal