5.3 Ejercicios
5.3.1 Ej: Ciudad de México
Considerando la lista siguiente,
cdmx_list <- list(
pop = 8918653,
delegaciones = c("Alvaro Obregón", "Azcapotzalco" ,"Benito Juárez" ,
"Coyoacán" ,"Cuajimalpa de Morelos" ,"Cuauhtémoc" ,
"Gustavo A. Madero" ,
"Iztacalco" ,"Iztapalapa" ,
"Magdalena Contreras" ,"Miguel Hidalgo" ,"Milpa Alta" ,
"Tláhuac" ,"Tlalpan" ,
"Venustiano Carranza" ,"Xochimilco"),
capital = TRUE
)
obtén la clase de cada elemento con la función lapply()
.
lapply( , class)
5.3.2 Ej: Mínimo y máximo
La siguiente función extrae la letra de menor posición y mayor posición en orden alfabético.
min_max_fun <- function(nombre){
nombre_sinespacios <- gsub(" ", "", nombre)
letras <- strsplit(nombre_sinespacios, split = "")[[1]]
c(minimo = min(letras), maximo = max(letras))
}
Es decir, si incluimos las letras abcz
la letra mínima es a y la máxima es z.
min_max_fun("abcz")
## minimo maximo
## "a" "z"
El siguiente vector incluye el nombre de las 16 delegaciones de la Ciudad de México.
delegaciones <- c("Alvaro Obregon", "Azcapotzalco" ,"Benito Juarez" ,
"Coyoacan" ,"Cuajimalpa de Morelos" ,"Cuauhtemoc" ,
"Gustavo Madero" ,
"Iztacalco" ,"Iztapalapa" ,
"Magdalena Contreras" ,"Miguel Hidalgo" ,"Milpa Alta" ,
"Tlahuac" ,"Tlalpan" ,
"Venustiano Carranza" ,"Xochimilco")
Aplica la función sapply()
para obtener un arreglo con la letra máxima y mínima de cada nombre.
sapply(, )
5.3.3 Ej: Precio de la gasolina
El siguiente vector incluye el precio de la gasolina en diferentes estados del país en julio de 2017.
gas_cdmx <- c(15.82, 15.77, 15.83, 15.23, 14.95, 15.42, 15.55)
gas_cdmx
## [1] 15.82 15.77 15.83 15.23 14.95 15.42 15.55
- Crea una función que convierta el precio a dolares suponiendo que un dolar equivale a 17.76 pesos.
conv_fun <- function(precio){
/17.76
return()
}
- Usando la función
lapply()
convierte el precio de la gasolina a dolares.
gas_cdmx_usd_lista <- lapply(, conv_fun)
- Usa la función
unlist()
para convertir la lista a un vector.
gas_cdmx_usd <- unlist()
print(gas_cdmx_usd)
5.3.4 Ej: Estadísticos importantes
estadisticos <- c("GAUSS:1777", "BAYES:1702", "FISHER:1890", "PEARSON:1857")
split_estadisticos <- strsplit(estadisticos, split = ":")
split_estadisticos
## [[1]]
## [1] "GAUSS" "1777"
##
## [[2]]
## [1] "BAYES" "1702"
##
## [[3]]
## [1] "FISHER" "1890"
##
## [[4]]
## [1] "PEARSON" "1857"
Usa la función predefinida tolower()
y lapply()
para convertir a minúsculas cada letra de la lista split_estadisticos
.
split_lower <- lapply( , )
print(split_lower)
5.3.5 Ej: Nombres y fechas
Usando el vector split_estadísticos
del ejercicio anterior.
str(split_estadisticos)
## List of 4
## $ : chr [1:2] "GAUSS" "1777"
## $ : chr [1:2] "BAYES" "1702"
## $ : chr [1:2] "FISHER" "1890"
## $ : chr [1:2] "PEARSON" "1857"
- Crea una función que regrese la primera posición.
primera_pos_fun <- function(lista){
}
- Crea una función que regrese la segunda posición.
segunda_pos_fun <- function(lista){
}
- Usando
lapply()
crea una lista con los nombres de los estadísticos y otra con la fecha de nacimiento.
nombres <- lapply()
fechas <- lapply()
5.3.6 Ej: Función anónima
Usando una función anónima y el vector split_estadísticos
en un solo lapply()
o sapply()
obtén un vector compuesto de la primera posición, es decir el nombre, en minúsculas.
Tip: si usas lapply()
recuerda usar la función unlist()
.
nombre_estadisticos <- (split_estadisticos, function(elemento){
tolower()
})
nombre_estadisticos
5.3.7 Ej: Tempraturas
En la siguiente lista se presenta el registro de temperatura de tres ciudades a las 07:00 am, 10:00 am, 01:00 pm, 04:00 pm y 07:00 pm.
temp_lista <- list(
cdmx = c(13, 15, 19, 22, 20),
guadalajara = c(18, 18, 22, 26, 27),
tuxtla_gtz = c(22, 24, 29, 32, 28)
)
str(temp_lista)
## List of 3
## $ cdmx : num [1:5] 13 15 19 22 20
## $ guadalajara: num [1:5] 18 18 22 26 27
## $ tuxtla_gtz : num [1:5] 22 24 29 32 28
Completa la siguiente función que obtiene el promedio entre el valor mínimo y máximo registrados.
promedio_extremos_fun <- function(x) {
( min() + max() ) / 2
}
Implementa la función a la lista y obtén la temperatura promedio de extremos para cada ciudad usando lapply()
y sapply()
.
lapply(,)
sapply(,)
5.3.8 Ej: ¡Demasiado Rápido!
Crea una función del tipo while
en la que mientras la velocidad sea mayor a 50 km/hr se reduzca de la siguiente forma:
Si es mayor a 80 km/hr se reducen 20 km/hr e imprime ¡Demasido rápido!.
Si es menor o igual a 80km/hr se reducen únicamente 5 km/hr.
velocidad_act <- 140
while(velocidad_act > ){
if(velocidad_act > ){
print()
velocidad_act <-
}
if(velocidad_act < ){
velocidad_act <-
}
velocidad_act
}