Introducere în mappere

Programare funcțională intermediară cu purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

.f în purrr

O funcție:

  • pentru fiecare element din .x
  • aplică .f(.x, ...)

Un număr $n$:

  • pentru fiecare element din .x
  • returnează .x[$n$]

Un vector de caractere $z$

  • pentru fiecare element din .x
  • returnează .x[$z$]
Programare funcțională intermediară cu purrr

.f ca funcție

Când este o funcție, .f poate fi:

  • O funcție clasică
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

 

  • O funcție lambda (anonimă)
map_dbl(visit_2014, function(x) {
  round(mean(x))
})
 [1]  5526  6546  6097  7760
 [5]  7025  7162 10484  8256
 [9]  6558  7686  5723  5053
Programare funcțională intermediară cu purrr

Mappere: partea 1

mapper: funcție anonimă cu o formulă unilaterală

# Cu un parametru 
map_dbl(visits2017, ~ round(mean(.x)))

# Este echivalent cu 
map_dbl(visits2017, ~ round(mean(.)))

# Este echivalent cu 
map_dbl(visits2017, ~ round(mean(..1)))
Programare funcțională intermediară cu purrr

Mappere: partea 2

mapper: funcție anonimă cu o formulă unilaterală

# Cu doi parametri
map2(visits2016, visits2017, ~ .x + .y)

# Este echivalent cu 
map2(visits2016, visits2017, ~ ..1 + ..2)
# Cu mai mult de doi parametri
pmap(list, ~ ..1 + ..2 + ..3)
Programare funcțională intermediară cu purrr

as_mapper()

as_mapper(): crearea obiectelor mapper dintr-o funcție lambda

# Funcție clasică 
round_mean <- function(x){
    round(mean(x))
}
# Ca mapper
round_mean <- as_mapper(~ round(mean(.x))))
Programare funcțională intermediară cu purrr

De ce mappere?

Mapperele sunt:

  • Concise

  • Ușor de citit

  • Reutilizabile

Creare mappere

Programare funcțională intermediară cu purrr

Să exersăm!

Programare funcțională intermediară cu purrr

Preparing Video For Download...