R 中的函数式编程

使用 purrr 的函数式编程进阶

Colin Fay

Data Scientist & R Hacker at ThinkR

关于 R 中的计算

"理解 R 中的计算,有两句口号很有用:

- 一切存在的都是对象。

- 一切发生的都是函数调用。"    — John Chambers

class(`+`)
"function"
class(`<-`)
"function"
使用 purrr 的函数式编程进阶

作为函数式语言的 R

函数可以被

  • 操作

  • 存入变量

  • 作为 lambda

 

  • 存入列表

  • 作为函数参数

  • 由函数返回

使用 purrr 的函数式编程进阶

关于"纯函数"

纯函数中:

  • 输出仅取决于输入

  • 无"副作用"

# 输出仅由输入决定
# 无副作用
sum(1:10)
55
mean(1:100)
50.5
使用 purrr 的函数式编程进阶

不纯函数也很有用

不纯函数:

  • 依赖环境

  • 有"副作用"

# 输出依赖环境 
Sys.Date()
"2018-10-04"
# 仅有副作用
write.csv(iris, "iris.csv")
使用 purrr 的函数式编程进阶

延伸阅读:函数式编程

使用 purrr 的函数式编程进阶

Passons à la pratique !

使用 purrr 的函数式编程进阶

Preparing Video For Download...