R para loop


Para loops

Um forloop é usado para iterar sobre uma sequência:

Exemplo

for (x in 1:10) {
  print(x)
}

Isso é menos parecido com a palavra- forchave em outras linguagens de programação e funciona mais como um método iterador, conforme encontrado em outras linguagens de programação orientadas a objetos.

Com o forloop podemos executar um conjunto de comandos, uma vez para cada item de um vetor, array, lista, etc.

Você aprenderá sobre listas e vetores , etc. em um capítulo posterior.

Exemplo

Imprima cada item em uma lista:

fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  print(x)
}

Exemplo

Imprima o número de dados:

dice <- c(1, 2, 3, 4, 5, 6)

for (x in dice) {
  print(x)
}

O forloop não requer que uma variável de indexação seja definida antecipadamente, como acontece com os whileloops.


Pausa

Com a breakinstrução, podemos parar o loop antes que ele tenha percorrido todos os itens:

Exemplo

Pare o loop em "cereja":

fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  if (x == "cherry") {
    break
  }
  print(x)
}

O loop irá parar em "cherry" porque optamos por terminar o loop usando a breakinstrução when xis igual a "cherry" ( x == "cherry").


Próximo

Com a nextinstrução, podemos pular uma iteração sem encerrar o loop:

Exemplo

Pular "banana":

fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  if (x == "banana") {
    next
  }
  print(x)
}

Quando o loop passar por "banana", ele irá ignorá-lo e continuará a fazer o loop.


Yahtzee!

If .. Else Combinado com um For Loop

Para demonstrar um exemplo prático, digamos que jogamos um jogo de Yahtzee!

Exemplo

Imprima "Yahtzee!" Se o número do dado for 6:

dice <- 1:6

for(x in dice) {
  if (x == 6) {
    print(paste("The dice number is", x, "Yahtzee!"))
  } else {
    print(paste("The dice number is", x, "Not Yahtzee"))
  }
}

Se o loop atingir os valores que variam de 1 a 5, ele imprime "No Yahtzee" e seu número. Quando atinge o valor 6, imprime "Yahtzee!" e seu número.


Loops aninhados

Você também pode ter um loop dentro de um loop:

Exemplo

Imprima o adjetivo de cada fruta em uma lista:

adj <- list("red", "big", "tasty")

fruits <- list("apple", "banana", "cherry")
  for (x in adj) {
    for (y in fruits) {
      print(paste(x, y))
  }
}