3  Bucles

3.1 ¿Qué es un bucle?

Un bucle es una instrucción que se repite hasta que se alcanza una condición específica. Puede haber una situación en la que necesite ejecutar un bloque de código varias veces. En R un bucle se puede utilizar para iterar sobre una lista, data frame, vector, matriz o cualquier otro objeto.

En programación, un bucle (o loop) es una estructura de control que permite ejecutar un bloque de código repetidamente mientras se cumple una condición específica. En R, como en muchos otros lenguajes de programación, hay varios tipos de bucles. Los bucles más comunes son for y while.

3.2 Construcción de bucles y Tipos de bucles

En R, hay varios tipos de bucles que se pueden utilizar para repetir un bloque de código bajo diferentes condiciones. Los bucles más comunes son for, while, y repeat.

3.2.1 Bucle for

El bucle for se utiliza para iterar sobre una secuencia de elementos, como un vector, y ejecutar un bloque de código para cada elemento.

# Ejemplo de bucle for que imprime los cuadrados de los números del 1 al 5
for (i in 1:5) {
  cuadrado <- i^2
  print(cuadrado)
}
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

3.2.2 Bucle while

El bucle while se utiliza para repetir un bloque de código mientras se cumple una condición específica.

# Ejemplo de bucle while que imprime los cuadrados de los números hasta que se alcanza un cierto límite
i <- 1
limite <- 10
while (i^2 <= limite) {
  cuadrado <- i^2
  print(cuadrado)
  i <- i + 1
}
[1] 1
[1] 4
[1] 9

3.2.3 Bucle repeat con break

El bucle repeat se utiliza para ejecutar un bloque de código de forma indefinida hasta que se utiliza la instrucción break para salir del bucle.

# Ejemplo de bucle repeat que imprime los cuadrados de los números hasta que se alcanza un cierto límite
i <- 1
limite <- 10
repeat {
  cuadrado <- i^2
  print(cuadrado)
  i <- i + 1
  if (cuadrado > limite) {
    break
  }
}
[1] 1
[1] 4
[1] 9
[1] 16

3.2.4 Bucle foreach

El paquete foreach proporciona una función homónima que facilita la iteración sobre elementos en paralelo o en series.

# Ejemplo de bucle foreach que imprime los cuadrados de los números del 1 al 5
library(foreach)
Warning: package 'foreach' was built under R version 4.3.1
foreach(i = 1:5) %do% {
  cuadrado <- i^2
  print(cuadrado)
}
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[[1]]
[1] 1

[[2]]
[1] 4

[[3]]
[1] 9

[[4]]
[1] 16

[[5]]
[1] 25

3.2.5 Bucle for con next

Dentro de un bucle for, puedes usar next para saltar a la siguiente iteración sin ejecutar el resto del código en la iteración actual.

# Ejemplo de bucle for que imprime los cuadrados de los números del 1 al 5, omitiendo el 3
for (i in 1:5) {
  if (i == 3) {
    next  # Omite la iteración actual
  }
  cuadrado <- i^2
  print(cuadrado)
}
[1] 1
[1] 4
[1] 16
[1] 25

Estos son algunos de los tipos de bucles más comunes en R. La elección del bucle dependerá de la estructura de datos y las condiciones específicas de tu tarea. Además, ten en cuenta que en R, a menudo se favorece el uso de operaciones vectorizadas sobre bucles explícitos para mejorar la eficiencia del código.

3.3 Declaraciones de control

Las declaraciones de control o estructuras de control nos permiten controlar la manera en que se ejecuta nuestro código.

Las estructuras de control establecen condicionales en nuestros código. Por ejemplo, qué condiciones deben cumplirse para realizar una operación o qué debe ocurrir para ejecutar una función.

Esto es de gran utilidad para determinar la lógica y el orden en que ocurren las operaciones, en especial al definir funciones.

Las estructuras de control más usadas en R son las siguientes.

Estructuras de control Descripción
ifelse Si, de otro modo
for Para cada uno en
while Mientras
break Interrupción
next Siguiente