使用 purrr 的函数式编程进阶
Colin Fay
Data Scientist & R Hacker at ThinkR
"理解 R 中的计算,有两句口号很有用:
- 一切存在的都是对象。
- 一切发生的都是函数调用。" — John Chambers
class(`+`)
"function"
class(`<-`)
"function"
函数可以被
操作
存入变量
作为 lambda
存入列表
作为函数参数
由函数返回
纯函数中:
输出仅取决于输入
无"副作用"
# 输出仅由输入决定
# 无副作用
sum(1:10)
55
mean(1:100)
50.5
不纯函数:
依赖环境
有"副作用"
# 输出依赖环境
Sys.Date()
"2018-10-04"
# 仅有副作用
write.csv(iris, "iris.csv")
使用 purrr 的函数式编程进阶