Introducción

En este documento se explican las estructuras de control if, for y while en R, con ejemplos prácticos que muestran cómo utilizarlas para resolver problemas reales.


1. Estructura if

La sentencia if permite ejecutar código condicionalmente, dependiendo de si una condición lógica es verdadera (TRUE) o falsa (FALSE).
También se puede complementar con else if y else.

Sintaxis:

if (condición) {
  # Código si la condición es TRUE
} else if (otra_condición) {
  # Código si la otra condición es TRUE
} else {
  # Código si ninguna condición se cumple
}

Ejemplo:

Determinar si un número ingresado por el usuario es positivo, negativo o cero.

numero <- -3

if (numero > 0) {
  cat("El número es positivo\n")
} else if (numero == 0) {
  cat("El número es cero\n")
} else {
  cat("El número es negativo\n")
}
## El número es negativo

Estructura for

El bucle for ejecuta un bloque de código un número determinado de veces, recorriendo una secuencia de valores.

Sintaxis:

for (variable in secuencia) {
  # Código a repetir
}

Ejemplo:

Calcular la suma de los primeros 10 números enteros positivos.

suma <- 0
for (i in 1:10) {
  suma <- suma + i
}
cat("La suma de los primeros 10 enteros es:", suma, "\n")
## La suma de los primeros 10 enteros es: 55

Estructura while

El bucle while ejecuta código mientras se cumpla una condición lógica. Es útil cuando no se sabe cuántas repeticiones serán necesarias.

Sintaxis:

while (condición) {
  # Código a repetir
}

Ejemplo:

Generar números aleatorios entre 0 y 1 y sumarlos hasta que la suma supere 3.

suma <- 0
contador <- 0
numeros<-c()

while (suma <= 3) {
  numero <- runif(1)   # números aleatorios entre [0,1] con distribución uniforme. 
  numeros<-c(numeros,numero)
  suma <- suma + numero
  contador <- contador + 1
  
}

cat("Se generaron", contador, "números aleatorios.\n")
## Se generaron 6 números aleatorios.
cat("La suma final fue:", suma, "\n")
## La suma final fue: 3.072931
cat("los numeros fueron", numeros,"\n")
## los numeros fueron 0.5783545 0.1587396 0.2979601 0.720497 0.954169 0.3632106