Documento 4 FUNCIONES LAPPLY

Creamos lista1, siendo dicha variable una lista con 2 elementos, el primero de ellos un vector de notas llamado ‘notas_grupo1’ y el segundo una matriz de elementos númericos.

lista1 <- list(notas_grupo1 = c(1,2,3,4,5,7,6,5,4,3), 
               notas_grupo2_3 = matrix(c(2,3,2,9,8,8), nrow=2, ncol=3))

Los mostramos para comprobar que siguen la estructura definida:

lista1
## $notas_grupo1
##  [1] 1 2 3 4 5 7 6 5 4 3
## 
## $notas_grupo2_3
##      [,1] [,2] [,3]
## [1,]    2    2    8
## [2,]    3    9    8
lista1$notas_grupo1
##  [1] 1 2 3 4 5 7 6 5 4 3
lista1$notas_grupo2_3
##      [,1] [,2] [,3]
## [1,]    2    2    8
## [2,]    3    9    8
  1. Usa lapply() para encontrar la longitud de las notas de todos los grupos que están en lista1.
e1 <- lapply(lista1, length)
e1
## $notas_grupo1
## [1] 10
## 
## $notas_grupo2_3
## [1] 6
  1. Usa sapply() para encontrar la media de las notas de todos los grupos que están en lista1.
e2 <- sapply(lista1, mean)
e2
##   notas_grupo1 notas_grupo2_3 
##       4.000000       5.333333
  1. Usa lapply() para encontrar los quantiles de las notas de todos los grupos que están en lista1.
e3 <- lapply(lista1, quantile)
e3
## $notas_grupo1
##   0%  25%  50%  75% 100% 
##    1    3    4    5    7 
## 
## $notas_grupo2_3
##   0%  25%  50%  75% 100% 
## 2.00 2.25 5.50 8.00 9.00
  1. Dada la siguiente función f1(x)=(3x)/10, aplica f1(x) a todas las notas para cambiar las puntuaciones a la escala de 1 a 3.
f1 <- function(x){
  
  3*x/10
  
}

e4 <- lapply(lista1, f1)
e4
## $notas_grupo1
##  [1] 0.3 0.6 0.9 1.2 1.5 2.1 1.8 1.5 1.2 0.9
## 
## $notas_grupo2_3
##      [,1] [,2] [,3]
## [1,]  0.6  0.6  2.4
## [2,]  0.9  2.7  2.4
  1. Repite el ejercicio 4 pero haciendo que f1(x) sea una función anónima dentro de lapply().
e5 <- lapply(lista1, function(x){3*x/10})
e5
## $notas_grupo1
##  [1] 0.3 0.6 0.9 1.2 1.5 2.1 1.8 1.5 1.2 0.9
## 
## $notas_grupo2_3
##      [,1] [,2] [,3]
## [1,]  0.6  0.6  2.4
## [2,]  0.9  2.7  2.4
  1. Encuentra los valores no repetidos de las notas
v2 <- apply(lista1[[2]], 1, unique)
v2
## [[1]]
## [1] 2 8
## 
## [[2]]
## [1] 3 9 8
  1. Convierte todas las notas de la lista a un vector (aplana los valores).
e7 <- unlist(lista1, use.names=FALSE)
e7
##  [1] 1 2 3 4 5 7 6 5 4 3 2 3 2 9 8 8
class(e7)
## [1] "numeric"