Intermediate Functional Programming with purrr
Colin Fay
Data-Scientist & R-Hacker @ ThinkR
Lambda functions:
map(1:5, ~ .x*10)
[[1]]
[1] 10
[[2]]
[1] 20
[[3]]
[1] 30
[[4]]
[1] 40
[[5]]
[1] 50
Reusable mappers:
ten_times <- as_mapper(~ .x * 10)
map(1:5, ten_times)
[[1]]
[1] 10
[[2]]
[1] 20
[[3]]
[1] 30
[[4]]
[1] 40
[[5]]
[1] 50
Functionals:
map()
& friends
keep()
& discard()
some()
& every()
Function operators:
safely()
& possibly()
partial()
compose()
negate()
library(purrr)
rounded_mean <- compose(
partial(round, digits = 1),
partial(mean, trim = 2, na.rm = TRUE))
map(list(airquality, mtcars),
~ map_dbl(.x, rounded_mean))
[[1]]
Ozone Solar.R Wind Temp Month Day
31.5 205.0 9.7 79.0 7.0 16.0
[[2]]
mpg cyl disp hp drat wt qsec vs am gear carb
19.2 6.0 196.3 123.0 3.7 3.3 17.7 0.0 0.0 4.0 2.0
Go and try purrr
in the wild ;)
DataCamp tidyverse courses
Continue to explore purrr
Intermediate Functional Programming with purrr