R 的函數式程式設計

使用 purrr 的 R 語言中級函式程式設計

Colin Fay

Data Scientist & R Hacker at ThinkR

關於 R 中的運算

「要理解 R 中的運算,有兩句口訣很有用:

- 一切存在的都是物件。

- 一切發生的都是函式呼叫。」    -John Chambers

class(`+`)
"function"
class(`<-`)
"function"
使用 purrr 的 R 語言中級函式程式設計

R 作為函數式語言

函式可以

  • 被操作

  • 存進變數

  • 匿名函式(lambda)

 

  • 存在 list 中

  • 作為函式的引數

  • 由函式回傳

使用 purrr 的 R 語言中級函式程式設計

關於「純函式」

純函式:

  • 輸出只取決於輸入

  • 無「副作用」

# 輸出只取決於輸入
# 無副作用
sum(1:10)
55
mean(1:100)
50.5
使用 purrr 的 R 語言中級函式程式設計

不純函式也很實用

不純的函式:

  • 依賴環境

  • 具有「副作用」

# 輸出取決於環境 
Sys.Date()
"2018-10-04"
# 僅有副作用
write.csv(iris, "iris.csv")
使用 purrr 的 R 語言中級函式程式設計

延伸閱讀:函數式程式設計

使用 purrr 的 R 語言中級函式程式設計

一起來練習吧!

使用 purrr 的 R 語言中級函式程式設計

Preparing Video For Download...