Capitulo 5 Examen Introduccion a R + DPLYR
5.1 Ejercicio 1
Define la siguiente función \(f1(x) = log(x)+1\)
Crea en R la siguiente lista:
observacionesA <- c(c(1:35),c(35:3))
nums <- c(35:70)
# Acceso a impares y pares
fila1 <- nums[c(TRUE,FALSE)]
fila2 <- nums[c(FALSE,TRUE)]
# Tambien podria haber hecho un rbind entre las filas y me ahorraba crear la matriz
lista1 <- list(observacionA = observacionesA, observacionB = matrix(c(fila1, fila2),2,18, byrow = TRUE))
lista1
## $observacionA
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
## [51] 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3
##
## $observacionB
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,] 35 37 39 41 43 45 47 49 51 53 55 57 59 61
## [2,] 36 38 40 42 44 46 48 50 52 54 56 58 60 62
## [,15] [,16] [,17] [,18]
## [1,] 63 65 67 69
## [2,] 64 66 68 70
## List of 2
## $ observacionA: int [1:68] 1 2 3 4 5 6 7 8 9 10 ...
## $ observacionB: int [1:2, 1:18] 35 36 37 38 39 40 41 42 43 44 ...
- Usa lapply() para aplicar f1(x) a las (observaciones) de la lista.
- Calcula la media posteriormente de todas las observaciones de la lista.
- Convierte los valores obtenidos en un vector y suma los valores de dicho vector.
consulta <- lista1 %>%
lapply(f1) %>%
sapply(mean)
# Conversion a vector
vector <- as.vector(consulta)
vector
## [1] 3.699694 4.940506
## [1] 8.6402
5.2 Ejercicio 2
Añade columna con el peso en kg (dale de nombre Kg - la columna wg tiene - Weight (1000 lbs) y se sabe que 0,453592 Kg son los Kg. de una libra).
Devuelve un dataframe con nombre mtcars1 con las columnas kg, namecar, wt, cyl, mpg (en este orden) ordenado por los que gastan mas (mpg me dice cuantas Miles/(US) gallon), teniendo 4 cilindros.
Haz un resumen automáticamente y calcula cuantos coches cumplen las restricciones anteriores y calcula la media del peso en Kg.
De mtcars1 obtener el/los 2 nombres de coche primeros (el programa debe seleccionar el/los 2 primero/s - no “a mano”), que gastan menos.
data("mtcars")
# Funcion para convertir en kg
toKG <- function(x){
return(x*0.453592)
}
tabla <- mtcars
tabla <- mutate(tabla, Kg = toKG(tabla$wt*1000))
# Como mtcars el nombre de sus filas se corresponde con namecar, la añado
names <- rownames(mtcars)
tabla <- mutate(tabla, namecar = names)
mtcars1 <- select(tabla, Kg, namecar, wt, cyl, mpg) %>% arrange(mpg) %>%
filter(cyl == 4)
# Summary obtiene un resumen de los elementos, incluyendo la media que buscamos
summary(mtcars1)
## Kg namecar wt cyl
## Min. : 686.3 Length:11 Min. :1.513 Min. :4
## 1st Qu.: 855.0 Class :character 1st Qu.:1.885 1st Qu.:4
## Median : 997.9 Mode :character Median :2.200 Median :4
## Mean :1036.8 Mean :2.286 Mean :4
## 3rd Qu.:1189.5 3rd Qu.:2.623 3rd Qu.:4
## Max. :1447.0 Max. :3.190 Max. :4
## mpg
## Min. :21.40
## 1st Qu.:22.80
## Median :26.00
## Mean :26.66
## 3rd Qu.:30.40
## Max. :33.90
## [1] 1036.788
## [1] "Volvo 142E" "Toyota Corona"
5.3 Ejercicio 3
Crear la lista espcificada y con un solo comando conseguir el siguiente resultado.
## [[1]]
## [1] "al1" "al2" "al3"
## List of 1
## $ : chr [1:3] "al1" "al2" "al3"
# Append para añadir un elemento a la lista siendo el mismo
mi_lista1 <- append(mi_lista1, mi_lista1)
mi_lista1
## [[1]]
## [1] "al1" "al2" "al3"
##
## [[2]]
## [1] "al1" "al2" "al3"