6 Instrucciones de control
En R se disponen de varias instrucciones de control para facilitar los procedimientos que un usuario debe realizar. A continuación se explican esas instrucciones de control.
6.1 Instrucción if
Esta instrucción sirve para realizar un conjunto de operaciones si se cumple cierta condición. A continuación se muestra la estructura básica de uso.
if (condicion) {
1
operación 2
operación
...
operación final }
Ejemplo
Una secretaria recibe la información del salario básico semanal de un empleado y las horas trabajadas durante la semana por ese empleado. El salario básico es la remuneración por 40 horas de labor por semana, las horas extra son pagadas a ciencuenta mil pesos. Escriba el procedimiento en R que debe usar la secretaria para calcular el salario semanal de un empleado que trabajó 45 horas y tiene salario básico de un millon de pesos.
El código para calcular el salario final del empleado es el siguiente:
<- 1 # Salario básico por semana
sal <- 45 # Horas laboradas por semana
hlab
if(hlab > 40) {
<- hlab - 40
hext <- hext * 0.05
salext <- sal + salext
sal
}
# Salario semanal sal
## [1] 1.25
6.2 Instrucción if
else
Esta instrucción sirve para realizar un conjunto de operaciones cuando NO se cumple cierta condición evaluada por un if
. A continuación se muestra la estructura básica de uso.
if (condicion) {
1
operación 2
operación
...
operación final
}else {
1
operación 2
operación
...
operación final }
6.3 Instrucción ifelse
Se recomienda usar la instrucción ifelse
cuando hay una sola instrucción para el caso if
y para el caso else
. A continuación se muestra la estructura básica de uso.
ifelse(condición, operación SI cumple, operación NO cumple)
Ejemplo
Suponga que usted recibe un vector de números enteros, escriba un procedimiento que diga si cada elemento del vector es par o impar.
<- c(5, 3, 2, 8, -4, 1)
x
ifelse(x %% 2 == 0, 'Es par', 'Es impar')
## [1] "Es impar" "Es impar" "Es par" "Es par" "Es par" "Es impar"
6.4 Instrucción for
La instrucción for
es muy útil para repetir un procedimiento cierta cantidad de veces. A continuación se muestra la estructura básica de uso.
for (i in secuencia) {
1
operación 2
operación
...
operación final }
Ejemplo
Escriba un procedimiento para crear 10 muestras de tamaño 100 de una distribución uniforme entre uno y tres. Para cada una de las muestra, se debe contar el número de elementos de la muestra que fueron mayores o iguales a 2.5.
<- 10 # Número de repeticiones
nrep <- 100 # Tamaño de la muestra
n <- numeric(nrep) # Vector para almacenar el conteo
conteo
for (i in 1:nrep) {
<- runif(n=n, min=1, max=3)
x <- sum(x >= 2.5)
conteo[i]
}
# Para obtener el conteo conteo
## [1] 24 37 28 26 30 18 29 23 19 19
6.5 Instrucción while
La instrucción while
es muy útil para repetir un procedimiento siempre que se cumple una condición. A continuación se muestra la estructura básica de uso.
while (condición) {
1
operación 2
operación
...
operación final }
Ejemplo
Suponga que se lanza una moneda en la cual el resultado es cara o sello. Escribir un procedimiento que simule lanzamientos hasta que el número de caras obtenidas sea 5. El procedimiento debe entregar el historial de lanzamientos.
Para simular el lanzamiento de una moneda se puede usar la función sample
y definiendo el vector resultados
con size=1
para simular un lanzamiento, a continuación el código y tres pruebas ilustrativas.
<- c('Cara', 'Sello')
resultados sample(x=resultados, size=1) # Prueba 1
## [1] "Sello"
Una vez seamos capaces de simular un lanzamiento podemos escribir el procedimiento para generar tantos lanzamientos hasta que se cumpla la condición. El código mostrado abajo permite hacer lo solicitado.
<- 0 # Contador de lanzamientos
num.lanza <- 0 # Contados de caras obtenidas
num.caras <- NULL # Vector vacío para almacenar
historial
while (num.caras < 5) {
<- sample(x=resultados, size=1)
res <- num.lanza + 1
num.lanza <- res
historial[num.lanza] if (res == 'Cara') {
<- num.caras + 1
num.caras
}
}
historial
## [1] "Sello" "Sello" "Sello" "Sello" "Cara" "Cara" "Sello" "Sello" "Cara"
## [10] "Cara" "Cara"
num.lanza
## [1] 11
for
se usa cuando sabemos el número de veces que se debe repetir el procedimiento, mientras que la instrucción while
se usa cuando debemos repetir un procedimiento cuando se cumpla una condición.
6.6 Instrucción repeat
La instrucción while
es muy útil para repetir un procedimiento siempre que se cumple una condición. A continuación se muestra la estructura básica de uso.
repeat {
1
operación 2
operación
...
operación finalif (condición) break
}
Ejemplo
Escribir un procedimiento para ir aumentando de uno en uno el valor de x
hasta que x
sea igual a siete El procedimiento debe imprimir por pantalla la secuencia de valores de x
.
<- 3 # Valor de inicio
x
repeat {
print(x)
<- x + 1
x if (x == 8) {
break
} }
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
break
sirve para salir de un procedimiento iterativo.