Sección 4 Control de flujo
4.1 Construcción condicional if
Es de la forma if (expr 1) expr 2 else expr 3
donde expr 1
debe producir
un valor lógico. Si expr 1
es verdadero (TRUE
), se ejecutara expr 2
.
Si expr 1
es falso (FALSE
), y se ha escrito la opcion else, que es
opcional, se ejecutara expr 3
.
if (3 > 2)
print("yes")
## [1] "yes"
if (2 > 3)
print("yes")
if (2 > 3) {
print("yes")
else{
} print("no")
}
## [1] "no"
Ejemplo con dos condiciones:
Supongamos que x <- 75
es la nota numérica de examen de un estudiante, queremos
asignar nota “A”, “B” o “C”
if (x < 60)
= "C"
nota if (x >= 60 & x < 80)
= "B"
nota if (x >= 80)
= "A" nota
ifelse
es la versión vectorizada de if
, eto sifnigica que para cada elemento
del vector lógico, ejecutará una u otra función dependiendo del valor.
Ejemplo:
<-
nota.num c(39, 51, 60, 65, 72, 78, 79, 83, 85, 85, 87, 89, 91, 95, 96, 97, 100, 100)
<- ifelse(nota.num >= 60, "aprobado", "desaprobado")
prueba prueba
## [1] "desaprobado" "desaprobado" "aprobado" "aprobado" "aprobado"
## [6] "aprobado" "aprobado" "aprobado" "aprobado" "aprobado"
## [11] "aprobado" "aprobado" "aprobado" "aprobado" "aprobado"
## [16] "aprobado" "aprobado" "aprobado"
4.2 Construcción repetitiva for
Es de la forma for (nombre in obj) {expr}
donde nombre
es la variable
de control de iteración, esto sifnifica que asumirá cada valor del objeto obj
es un vector (puede ser una secuancia m:n
), y expr
es una expresión, a
menudo agrupada, en cuyas sub-expresiones puede aparecer la variable de
control, nombre
. expr
se evalua repetidamente conforme nombre
recorre
los valores del objeto obj
.
for (i in 1:10) print(i)
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
= numeric(10)
x for (i in 1:10) x[i] = i^2
= 0
y for (i in 1:10) y = y + i
4.3 Construccion repetitiva while
Es de la forma while (expr1) expr2
, indicando que se quiere repetir la
acción expr2
mientras que ocurra expr1
.
= 0
i while (i < 15) {
print(i)
= i + 1
i }
## [1] 0
## [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
Ejercitación
Construcción condicional
Escriba el comando neccesario para poner notas “A”, “B” o “C” dependiendo del valor de
final_score
: “C” si final_score <60, “B” si 60 =< final_score < 80, “A” si 80 =< final_score =< 100.Construcción repetitiva
Usar un ciclo
for
para contar la cantidad de números mayores a 10 en el vectorx <- c(2,5,3,9,8,11,6,8,12,3,57,56)
, ¿Se podría hacer sin la funciónfor
?