使用 purrr 的 R 語言中級函式程式設計
Colin Fay
Data Scientist & R Hacker at ThinkR
「要理解 R 中的運算,有兩句口訣很有用:
- 一切存在的都是物件。
- 一切發生的都是函式呼叫。」 -John Chambers
class(`+`)
"function"
class(`<-`)
"function"
函式可以
被操作
存進變數
匿名函式(lambda)
存在 list 中
作為函式的引數
由函式回傳
純函式:
輸出只取決於輸入
無「副作用」
# 輸出只取決於輸入
# 無副作用
sum(1:10)
55
mean(1:100)
50.5
不純的函式:
依賴環境
具有「副作用」
# 輸出取決於環境
Sys.Date()
"2018-10-04"
# 僅有副作用
write.csv(iris, "iris.csv")
使用 purrr 的 R 語言中級函式程式設計