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"