R para bucle
Para bucles
Un for
bucle se utiliza para iterar sobre una secuencia:
Ejemplo
for (x in 1:10) {
print(x)
}
Esto se parece menos a la for
palabra clave en otros lenguajes de programación y funciona más como un método iterador que se encuentra en otros lenguajes de programación orientados a objetos.
Con el for
bucle podemos ejecutar un conjunto de instrucciones, una vez por cada elemento de un vector, matriz, lista, etc.
Ejemplo
Imprime todos los elementos de una lista:
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
print(x)
}
Ejemplo
Imprime el número de dados:
dice <- c(1, 2, 3, 4, 5, 6)
for (x in dice) {
print(x)
}
El for
ciclo no requiere una variable de indexación para establecer de antemano, como con los while
ciclos.
Romper
Con la break
declaración, podemos detener el ciclo antes de que haya recorrido todos los elementos:
Ejemplo
Detenga el bucle en "cherry":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "cherry") {
break
}
print(x)
}
El ciclo se detendrá en "cereza" porque hemos optado por finalizar el ciclo usando la break
instrucción when
x
es igual a "cereza" ( x ==
"cherry"
).
próximo
Con la next
declaración, podemos omitir una iteración sin terminar el bucle:
Ejemplo
Omitir "plátano":
fruits <- list("apple", "banana", "cherry")
for (x in fruits) {
if (x == "banana") {
next
}
print(x)
}
Cuando el ciclo pasa "banana", lo omitirá y continuará con el ciclo.
¡Yahtzee!
If .. Else combinado con un For Loop
Para demostrar un ejemplo práctico, ¡digamos que jugamos un juego de Yahtzee!
Ejemplo
Imprimir "Yahtzee!" Si el número de dados es 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"))
}
}
Si el bucle alcanza los valores que van del 1 al 5, imprime "No Yahtzee" y su número. Cuando alcanza el valor 6, imprime "Yahtzee!" y su número.
Bucles anidados
También puede tener un bucle dentro de un bucle:
Ejemplo
Escribe el adjetivo de cada fruta en una lista:
adj <- list("red", "big", "tasty")
fruits <- list("apple", "banana",
"cherry")
for (x in adj) {
for (y in fruits) {
print(paste(x, y))
}
}