En programación, los ciclos permiten repetir instrucciones varias veces. En R, dos de las estructuras repetitivas más importantes son:
for()while()Además, existen instrucciones que permiten modificar el comportamiento de un ciclo:
break: termina completamente el ciclo.next: omite la iteración actual y continúa con la
siguiente.En este documento se presentan ejemplos básicos para comprender su funcionamiento en RStudio.
for()El ciclo for() se utiliza principalmente cuando
conocemos los valores o elementos que queremos recorrer.
for(variable in secuencia){
instrucciones
}
Por ejemplo:
for(i in 1:5){
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
for(i in 1:5){
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
for(i in 5:10){
print(i)
}
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
for(i in 1:5){
cuadrado <- i^2
print(cuadrado)
}
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
nombres <- c("Ana", "Juan", "Pedro", "Laura")
for(nombre in nombres){
print(nombre)
}
## [1] "Ana"
## [1] "Juan"
## [1] "Pedro"
## [1] "Laura"
suma <- 0
for(i in 1:5){
suma <- suma + i
}
print(suma)
## [1] 15
En este ejemplo, la variable suma funciona como un
acumulador.
while()El ciclo while() ejecuta instrucciones mientras
una condición sea verdadera.
while(condicion){
instrucciones
}
En un while() normalmente debemos controlar tres
elementos:
i <- 1
while(i <= 5){
print(i)
i <- i + 1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
i <- 5
while(i <= 10){
print(i)
i <- i + 1
}
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
i <- 5
while(i >= 1){
print(i)
i <- i - 1
}
## [1] 5
## [1] 4
## [1] 3
## [1] 2
## [1] 1
i <- 2
while(i <= 10){
print(i)
i <- i + 2
}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
numero <- 2
while(numero <= 100){
print(numero)
numero <- numero * 2
}
## [1] 2
## [1] 4
## [1] 8
## [1] 16
## [1] 32
## [1] 64
breakLa instrucción break permite terminar
completamente un ciclo antes de que finalice normalmente.
for(i in 1:10){
if(i == 5){
break
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
numeros <- c(3, 7, 10, 15, 20)
for(numero in numeros){
if(numero == 15){
break
}
print(numero)
}
## [1] 3
## [1] 7
## [1] 10
break dentro de while()i <- 1
while(i <= 10){
if(i == 6){
break
}
print(i)
i <- i + 1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
for(i in 1:30){
if(i > 20){
break
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
numero <- 2
while(numero < 100){
numero <- numero * 2
print(numero)
if(numero >= 20){
break
}
}
## [1] 4
## [1] 8
## [1] 16
## [1] 32
nextLa instrucción next permite omitir la iteración
actual y continuar con la siguiente.
for(i in 1:10){
if(i == 5){
next
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
for(i in 1:5){
if(i == 3){
next
}
print(i)
}
## [1] 1
## [1] 2
## [1] 4
## [1] 5
for(i in 1:10){
if(i %% 2 == 0){
next
}
print(i)
}
## [1] 1
## [1] 3
## [1] 5
## [1] 7
## [1] 9
El operador %% calcula el residuo de una división.
Por ejemplo:
4 %% 2
## [1] 0
5 %% 2
## [1] 1
Un número es par cuando:
numero %% 2 == 0
frutas <- c("Manzana", "Pera", "Mango", "Uva")
for(fruta in frutas){
if(fruta == "Mango"){
next
}
print(fruta)
}
## [1] "Manzana"
## [1] "Pera"
## [1] "Uva"
numeros <- c(1, 2, 3, 4, 5)
for(numero in numeros){
if(numero < 3){
next
}
print(numero)
}
## [1] 3
## [1] 4
## [1] 5
break y nextLa diferencia principal es:
break termina completamente el ciclo.next solamente omite una iteración.breakfor(i in 1:5){
if(i == 3){
break
}
print(i)
}
## [1] 1
## [1] 2
El resultado será:
1
2
Cuando i toma el valor 3, el ciclo termina.
nextfor(i in 1:5){
if(i == 3){
next
}
print(i)
}
## [1] 1
## [1] 2
## [1] 4
## [1] 5
El resultado será:
1
2
4
5
Cuando i toma el valor 3, solamente se omite esa
iteración.
| Estructura | Función principal |
|---|---|
for() |
Repetir instrucciones recorriendo una secuencia |
while() |
Repetir instrucciones mientras una condición sea verdadera |
break |
Terminar completamente un ciclo |
next |
Omitir una iteración y continuar |
Supongamos que queremos recorrer los números del 1 al 10, omitir el número 4 y terminar cuando lleguemos al número 8.
for(i in 1:10){
if(i == 4){
next
}
if(i == 8){
break
}
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 5
## [1] 6
## [1] 7
El resultado será:
1
2
3
5
6
7
Utilice un ciclo for() para mostrar los números del 1 al
20.
Utilice un ciclo for() para mostrar los números pares
entre 2 y 20.
Utilice un ciclo while() para mostrar los números del 1
al 10.
Utilice un ciclo while() para realizar una cuenta
regresiva desde 10 hasta 1.
Utilice un ciclo for() y break para
recorrer los números del 1 al 20 y detener el ciclo cuando llegue al
número 10.
Utilice un ciclo for() y next para mostrar
los números del 1 al 10, pero omitiendo el número 5.
Cree el siguiente vector:
notas <- c(4.5, 3.8, 2.7, 4.0, 1.9)
Utilice un ciclo for() para mostrar cada una de las
notas.
Utilice un ciclo for() para calcular la suma de los
números del 1 al 10.
Los ciclos son estructuras fundamentales en programación.
El ciclo for() es apropiado cuando conocemos los
elementos que deseamos recorrer.
El ciclo while() es útil cuando la repetición depende de
una condición.
Las instrucciones break y next permiten
controlar la ejecución de los ciclos:
break finaliza el ciclo.next salta una iteración.Comprender estas estructuras permite avanzar posteriormente hacia ciclos con condicionales, vectores, matrices, simulaciones y análisis de datos en R.