R para loop
Para loops
Um for
loop é usado para iterar sobre uma sequência:
Exemplo
for (x in 1:10) {
print(x)
}
Isso é menos parecido com a palavra- for
chave 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 for
loop podemos executar um conjunto de comandos, uma vez para cada item de um vetor, array, lista, etc.
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 for
loop não requer que uma variável de indexação seja definida antecipadamente, como acontece com os while
loops.
Pausa
Com a break
instruçã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 break
instrução when
x
is igual a "cherry" ( x ==
"cherry"
).
Próximo
Com a next
instruçã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))
}
}