Introdução a mappers

Programação Funcional Intermediária com purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

.f no purrr

Uma função:

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

Um número $n$:

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

Um vetor de caracteres $z$

  • para cada elemento de .x
  • executar .x[$z$]
Programação Funcional Intermediária com purrr

.f como função

Quando é uma função, .f pode ser:

  • Uma função clássica
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

 

  • Uma função lambda (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
Programação Funcional Intermediária com purrr

Mappers: parte 1

mapper: função anônima com fórmula unilateral

# Com um parâmetro 
map_dbl(visits2017, ~ round(mean(.x)))

# Equivale a 
map_dbl(visits2017, ~ round(mean(.)))

# Equivale a 
map_dbl(visits2017, ~ round(mean(..1)))
Programação Funcional Intermediária com purrr

Mappers: parte 2

mapper: função anônima com fórmula unilateral

# Com dois parâmetros
map2(visits2016, visits2017, ~ .x + .y)

# Equivale a 
map2(visits2016, visits2017, ~ ..1 + ..2)
# Com mais de dois parâmetros
pmap(list, ~ ..1 + ..2 + ..3)
Programação Funcional Intermediária com purrr

as_mapper()

as_mapper(): cria objetos mapper a partir de uma função lambda

# Função clássica 
round_mean <- function(x){
    round(mean(x))
}
# Como mapper
round_mean <- as_mapper(~ round(mean(.x))))
Programação Funcional Intermediária com purrr

Por que mappers?

Mappers são:

  • Concisos

  • Fáceis de ler

  • Reutilizáveis

Criar mappers

Programação Funcional Intermediária com purrr

Vamos praticar!

Programação Funcional Intermediária com purrr

Preparing Video For Download...