2 R function

function (ฟังก์ชัน) คือ ชุดของคำสั่งที่จะสั่งการให้ R ทำงานตามจุดประสงค์ที่เราตั้งไว้ โดยตัว function นั้น จะประกอบไปด้วย

  • function ที่มีมาพร้อมกับ R ตั้งแต่ต้น (base R function)
  • function ที่ผู้นิพนธ์ท่านอื่นเขียนไว้ และรวบรวมมาเป็น ชุดของ function เรียกว่า package
  • function ที่เราเขียนขึ้นมาเอง

2.1 Anatomy of function

function นั้นประกอบด้วย 4 ส่วน คือ 1. Function name (ชื่อฟังก์ชัน) 2. Argument (รายละเอียดของฟังก์ชัน) 3. Function body (รายละเอียดของฟังก์ชัน) 4. Return (ผลลัพธ์ของฟังก์ชัน)

ยกตัวอย่างฟังก์ชันหา ค่าเฉลี่ยของข้อมูล

find_mean <- function(x, y) {
    (x + y)/2
}

find_mean(2, 3)
## [1] 2.5
find_mean(3, 5)
## [1] 4

จะเห็นว่า function นี่รับข้อมูล 2 ตัวแปร คือ x และ y ซึ่งเราจะต้องแทนค่าที่เราต้องการลงไปใน function หลังจากนั้น function จะทำการประมวลผลและส่งผลลัพธ์กลับมา

ในผู้เริ่มต้น ส่วนใหญ่เรามักจะไม่ใช้ function ที่เขียนขึ้นมาเองมากนัก เนื่องจาก basic operation ส่วนใหญ่จะมีผู้นิพนธ์ขึ้นมาให้แล้ว

2.2 Base R function

Base R function คือ function ที่ติดกับ R มาตั้งแต่แรก ซึ่งเราสามารถเรียกใช้ได้เลยโดยไม่ต้องทำการเรียก package ขึ้นมาก่อน

max(c(1, 2, 4, 5, 5, 68))  # find max value
## [1] 68
min(c(1, 4, 5, 6, -20))  # find min value
## [1] -20
mean(c(1, 2, 3, 4))  # find mean
## [1] 2.5
median(c(1, 2, 5, 3, 4))  # find median
## [1] 3
unique(c(1, 1, 1, 1, 2, 2, 4, 5, 5, 6, 7, 8))  # display only unique values
## [1] 1 2 4 5 6 7 8

ในส่วนของการ manipulate dataframe นั้น คำสั่งต่างๆ ที่น่ารู้มีดังนี้

df <- data.frame(x = c(3, 3, 6, 7, 8, 9), y = c(2, 5, 8, 1, 2, 3), z = c(4, 7, 9,
    4, 7, 8))
df
head(df, 5)  # ดู 5 แถวแรก
tail(df, 5)  # ดู 5 แถวล่าง
rowMeans(df)  # หาค่า mean แต่ละแถว
## [1] 3.000000 5.000000 7.666667 4.000000 5.666667 6.666667
colMeans(df)  # หาค่า mean แต่ละ columns
##   x   y   z 
## 6.0 3.5 6.5
rownames(df)  # ชื่อแถว
## [1] "1" "2" "3" "4" "5" "6"
colnames(df)  # ชื่อ column
## [1] "x" "y" "z"

สามารถดู base R function ทั้งหมดได้ที่ https://stat.ethz.ch/R-manual/R-devel/library/base/html/00Index.html

ถ้าเราต้องการดูว่า function นั้นใช้งานอย่างไร ให้ใส่เครื่องหมาย ? หน้า function นั้น