Lập trình hàm nâng cao với purrr
Colin Fay
Data Scientist & R Hacker at ThinkR
Một hàm:
Một số $n$:
Một vector ký tự $z$
Khi là một hàm, .f có thể là:
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
map_dbl(visit_2014, function(x) {
round(mean(x))
})
[1] 5526 6546 6097 7760
[5] 7025 7162 10484 8256
[9] 6558 7686 5723 5053
mapper: hàm ẩn danh với công thức một vế
# Với một tham số
map_dbl(visits2017, ~ round(mean(.x)))
# Tương đương với
map_dbl(visits2017, ~ round(mean(.)))
# Tương đương với
map_dbl(visits2017, ~ round(mean(..1)))
mapper: hàm ẩn danh với công thức một vế
# Với hai tham số
map2(visits2016, visits2017, ~ .x + .y)
# Tương đương với
map2(visits2016, visits2017, ~ ..1 + ..2)
# Với nhiều hơn hai tham số
pmap(list, ~ ..1 + ..2 + ..3)
as_mapper(): tạo đối tượng mapper từ hàm lambda
# Hàm thông thường
round_mean <- function(x){
round(mean(x))
}
# Dưới dạng mapper
round_mean <- as_mapper(~ round(mean(.x))))
Mappers có đặc điểm:
Ngắn gọn
Dễ đọc
Tái sử dụng

Lập trình hàm nâng cao với purrr