Functional programming in R

Functional Programming ระดับกลางด้วย purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

การคำนวณใน R

"เพื่อทำความเข้าใจการคำนวณใน R มีหลักสองข้อที่ช่วยได้:

- ทุกสิ่งที่มีอยู่คือออบเจกต์

- ทุกสิ่งที่เกิดขึ้นคือการเรียกฟังก์ชัน"    -John Chambers

class(`+`)
"function"
class(`<-`)
"function"
Functional Programming ระดับกลางด้วย purrr

R ในฐานะภาษา functional programming

ฟังก์ชันสามารถ

  • จัดการได้

  • เก็บในตัวแปร

  • เป็น lambda

 

  • เก็บในลิสต์

  • เป็นอาร์กิวเมนต์ของฟังก์ชัน

  • ส่งคืนจากฟังก์ชัน

Functional Programming ระดับกลางด้วย purrr

เกี่ยวกับ "pure functions"

ใน pure function:

  • ผลลัพธ์ขึ้นอยู่กับ input เท่านั้น

  • ไม่มี "side-effect"

# Output depends only on inputs
# No side effect
sum(1:10)
55
mean(1:100)
50.5
Functional Programming ระดับกลางด้วย purrr

Impure functions ก็มีประโยชน์

Impure functions:

  • ขึ้นอยู่กับ environment

  • มี "side-effects"

# Outputs depends of environment 
Sys.Date()
"2018-10-04"
# Side effect only
write.csv(iris, "iris.csv")
Functional Programming ระดับกลางด้วย purrr

อ่านเพิ่มเติมเกี่ยวกับ functional programming

Functional Programming ระดับกลางด้วย purrr

มาฝึกกันเถอะ!

Functional Programming ระดับกลางด้วย purrr

Preparing Video For Download...