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
  1. 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()
}
  1. Usando la función lapply() convierte el precio de la gasolina a dolares.
gas_cdmx_usd_lista <- lapply(, conv_fun)
  1. 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"
  1. Crea una función que regrese la primera posición.
primera_pos_fun <- function(lista){
  
}
  1. Crea una función que regrese la segunda posición.
segunda_pos_fun <- function(lista){
  
}
  1. 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
}