Wprowadzenie do programowania z purrr

Funkcyjne programowanie średnio zaawansowane z purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

$whoami

Instruktor Colin Fay pijący kawę

Funkcyjne programowanie średnio zaawansowane z purrr

Odkrywanie purrr

Funkcyjne programowanie średnio zaawansowane z purrr

Zakres kursu

Podstawowy schemat funkcji map

Źródło: Charlotte Wickham — A introduction to purrr

Funkcyjne programowanie średnio zaawansowane z purrr

Strona portalu Open Data z Saint-Malo we Francji

Funkcyjne programowanie średnio zaawansowane z purrr

Podstawy purrr – przypomnienie (część 1)

map(.x, .f, ...)

  • dla każdego elementu .x
  • wykonaj .f(.x, ...)
  • zwróć listę
res <- map(visit_2015, sum) 
class(res)
"list"

map_dbl(.x, .f, ...)

  • dla każdego elementu .x
  • wykonaj .f(.x, ...)
  • zwróć wektor liczbowy
res <- map_dbl(visit_2015, sum) 
class(res)
"numeric"
Funkcyjne programowanie średnio zaawansowane z purrr

Podstawy purrr – przypomnienie (część 2)

map2(.x, .y, .f, ...)

  • dla każdego elementu .x i .y
  • wykonaj .f(.x, .y, ...)
  • zwróć listę
res <- map2(visit_2015,
            visit_2016,
            sum)
class(res)
"list"

map2_dbl(.x, .f, ...)

  • dla każdego elementu .x i .y
  • wykonaj .f(.x, .y, ...)
  • zwróć wektor liczbowy
res <- map2_dbl(visit_2015,
                visit_2016,
                sum)
class(res)
"numeric"
Funkcyjne programowanie średnio zaawansowane z purrr

Podstawy purrr – przypomnienie (część 3)

pmap(.l, .f, ...)

  • dla każdej podlisty .l
  • wykonaj f(..1, ..2, ..3, [itd], ...)
  • zwróć listę
l <- list(visit_2014,
          visit_2015,
          visit_2016)
res  <- pmap(l, sum)
class(res)
"list"

pmap_dbl(.l, .f, ...)

  • dla każdej podlisty .l
  • wykonaj f(..1, ..2, ..3, [itd], ...)
  • zwróć wektor liczbowy
l <- list(visit_2014,
          visit_2015,
          visit_2016)
res <- pmap_dbl(l, sum)
class(res)
"numeric"
Funkcyjne programowanie średnio zaawansowane z purrr

Czas na ćwiczenia!

Funkcyjne programowanie średnio zaawansowane z purrr

Preparing Video For Download...