使用 purrr 的编程入门

使用 purrr 的函数式编程进阶

Colin Fay

Data Scientist & R Hacker at ThinkR

$whoami

讲师 Colin Fay 喝咖啡

使用 purrr 的函数式编程进阶

走近 purrr

使用 purrr 的函数式编程进阶

本课将涵盖什么?

map 基本结构

来源:Charlotte Wickham — A introduction to purrr

使用 purrr 的函数式编程进阶

法国圣马洛的开放数据门户网站

使用 purrr 的函数式编程进阶

purrr 基础回顾(第 1 部分)

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

  • 对 .x 的每个元素
  • 执行 .f(.x, ...)
  • 返回列表
res <- map(visit_2015, sum) 
class(res)
"list"

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

  • 对 .x 的每个元素
  • 执行 .f(.x, ...)
  • 返回数值向量
res <- map_dbl(visit_2015, sum) 
class(res)
"numeric"
使用 purrr 的函数式编程进阶

purrr 基础回顾(第 2 部分)

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

  • 对 .x 和 .y 的每个元素
  • 执行 .f(.x, .y, ...)
  • 返回列表
res <- map2(visit_2015,
            visit_2016,
            sum)
class(res)
"list"

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

  • 对 .x 和 .y 的每个元素
  • 执行 .f(.x, .y, ...)
  • 返回数值向量
res <- map2_dbl(visit_2015,
                visit_2016,
                sum)
class(res)
"numeric"
使用 purrr 的函数式编程进阶

purrr 基础回顾(第 3 部分)

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

  • 对 .l 的每个子列表
  • 执行 f(..1, ..2, ..3, [等], ...)
  • 返回列表
l <- list(visit_2014,
          visit_2015,
          visit_2016)
res  <- pmap(l, sum)
class(res)
"list"

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

  • 对 .l 的每个子列表
  • 执行 f(..1, ..2, ..3, [等], ...)
  • 返回数值向量
l <- list(visit_2014,
          visit_2015,
          visit_2016)
res <- pmap_dbl(l, sum)
class(res)
"numeric"
使用 purrr 的函数式编程进阶

让我们练习吧!

使用 purrr 的函数式编程进阶

Preparing Video For Download...