R para bucle


Para bucles

Un forbucle se utiliza para iterar sobre una secuencia:

Ejemplo

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

Esto se parece menos a la forpalabra 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 forbucle podemos ejecutar un conjunto de instrucciones, una vez por cada elemento de un vector, matriz, lista, etc.

Aprenderá sobre listas y vectores , etc. en un capítulo posterior.

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 forciclo no requiere una variable de indexación para establecer de antemano, como con los whileciclos.


Romper

Con la breakdeclaració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 breakinstrucción when xes igual a "cereza" ( x == "cherry").


próximo

Con la nextdeclaració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))
  }
}