Introducción a los mappers

Programación funcional intermedia con purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

.f en purrr

Una función:

  • para cada elemento de .x
  • ejecutar .f(.x, ...)

Un número $n$:

  • para cada elemento de .x
  • ejecutar .x[$n$]

Un vector de caracteres $z$

  • para cada elemento de .x
  • ejecutar .x[$z$]
Programación funcional intermedia con purrr

.f como función

Cuando es una función, .f puede ser:

  • Una función clásica
my_fun <- function(x) {
  round(mean(x))
}
map_dbl(visit_2014, my_fun)
 [1]  5526  6546  6097  7760
 [5]  7025  7162 10484  8256
 [9]  6558  7686  5723  5053

 

  • Una función lambda (o anónima)
map_dbl(visit_2014, function(x) {
  round(mean(x))
})
 [1]  5526  6546  6097  7760
 [5]  7025  7162 10484  8256
 [9]  6558  7686  5723  5053
Programación funcional intermedia con purrr

Mappers: parte 1

mapper: función anónima con una fórmula de un solo lado

# Con un parámetro 
map_dbl(visits2017, ~ round(mean(.x)))

# Es equivalente a 
map_dbl(visits2017, ~ round(mean(.)))

# Es equivalente a 
map_dbl(visits2017, ~ round(mean(..1)))
Programación funcional intermedia con purrr

Mappers: parte 2

mapper: función anónima con una fórmula de un solo lado

# Con dos parámetros
map2(visits2016, visits2017, ~ .x + .y)

# Es equivalente a 
map2(visits2016, visits2017, ~ ..1 + ..2)
# Con más de dos parámetros
pmap(list, ~ ..1 + ..2 + ..3)
Programación funcional intermedia con purrr

as_mapper()

as_mapper(): crea objetos mapper a partir de una función lambda

# Función clásica 
round_mean <- function(x){
    round(mean(x))
}
# Como mapper
round_mean <- as_mapper(~ round(mean(.x))))
Programación funcional intermedia con purrr

¿Por qué mappers?

Los mappers son:

  • Concisos

  • Fáciles de leer

  • Reutilizables

Crear mappers

Programación funcional intermedia con purrr

¡Vamos a practicar!

Programación funcional intermedia con purrr

Preparing Video For Download...