使用 purrr 的函数式编程进阶
Colin Fay
Data-Scientist & R-Hacker @ ThinkR
Lambda 函数:
map(1:5, ~ .x*10)
[[1]]
[1] 10
[[2]]
[1] 20
[[3]]
[1] 30
[[4]]
[1] 40
[[5]]
[1] 50
可复用的 mapper:
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
函数式:
map() 及相关
keep() 与 discard()
some() 与 every()
函数算子:
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
去实际使用 purrr;)
DataCamp 的 tidyverse 课程
继续探索 purrr
使用 purrr 的函数式编程进阶