การเขียนฟังก์ชัน

R ระดับกลาง

Filip Schouwenaars

DataCamp Instructor

เมื่อใดควรเขียนฟังก์ชันเอง?

  • แก้ปัญหาเฉพาะเจาะจงที่กำหนดไว้ชัดเจน
  • หลักการ Black box
  • หากทำงานได้ กลไกภายในไม่สำคัญ
R ระดับกลาง

ฟังก์ชัน triple()

R ระดับกลาง

ฟังก์ชัน triple()

my_fun <- function(arg1, arg2) {
  body
}
R ระดับกลาง

ฟังก์ชัน triple()

triple <- function(arg1, arg2) {
  body
}
R ระดับกลาง

ฟังก์ชัน triple()

triple <- function(x) {
  body
}
R ระดับกลาง

ฟังก์ชัน triple()

triple <- function(x) {
  3 * x
}
R ระดับกลาง

ฟังก์ชัน triple()

triple <- function(x) {
  3 * x
}
ls()
"triple"
triple(6)
18
  • ค่า 6 ชนิด Numeric จับคู่กับอาร์กิวเมนต์ x (ตามตำแหน่ง)
  • body ของฟังก์ชันถูกรัน: 3 * 6
  • นิพจน์สุดท้าย = ค่าที่ return
R ระดับกลาง

return()

triple <- function(x) {
  y <- 3 * x
  return(y)
}
triple(6)
18
R ระดับกลาง

ฟังก์ชัน math_magic()

R ระดับกลาง

ฟังก์ชัน math_magic()

R ระดับกลาง

ฟังก์ชัน math_magic()

R ระดับกลาง

ฟังก์ชัน math_magic()

my_fun <- function(arg1, arg2) {
  body
}
R ระดับกลาง

ฟังก์ชัน math_magic()

math_magic <- function(arg1, arg2) {
  body
}
R ระดับกลาง

ฟังก์ชัน math_magic()

math_magic <- function(a, b) {
  body
}
R ระดับกลาง

ฟังก์ชัน math_magic()

math_magic <- function(a, b) {
  a*b + a/b
}
math_magic(4, 2)
10
math_magic(4)
Error: argument "b" is missing, with no default
R ระดับกลาง

อาร์กิวเมนต์ที่มีค่าเริ่มต้น

math_magic <- function(a, b = 1) {
  a*b + a/b
}
math_magic(4)
8
math_magic(4, 0)
Inf
R ระดับกลาง

การใช้ return()

math_magic <- function(a, b = 1) {
  if(b == 0){
    return(0)
  }
  a*b + a/b
}
math_magic(4, 0)
0
R ระดับกลาง

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

R ระดับกลาง

Preparing Video For Download...