1 Basic R
1.1 Basic operation
เราสามารถใช้ R ในการคำนวณต่างๆ ได้ เช่น บวก ลบ คูณ หาร ยกกำลัง เป็นต้น
3 + 2
## [1] 5
3 - 2
## [1] 1
3 * 2
## [1] 6
3/2
## [1] 1.5
3^2
## [1] 9
log(3)
## [1] 1.098612
sqrt(3)
## [1] 1.732051
3 == 3 # ตรวจสอบว่าข้อมูลเหมือนกันหรือไม่
## [1] TRUE
1.2 Variable
1.2.1 Variable assignment
R สามารถเก็บข้อมูลต่างๆ ไว้ในตัวแปรได้ เพื่อที่สามารถนำมาใช้ในภายหลัง โดยการเก็บตัวแปรนั้นจะใช้เครื่องหมาย <-
<- 2
x x
## [1] 2
<- 3
y y
## [1] 3
+ y # เราสามารถนำตัวแปรมาทำ operation ได้ตามปกติ x
## [1] 5
* y x
## [1] 6
<- 5 # การลงข้อมูลในตัวแปรเดิมจะเป็นการลบตัวแปรเก่า
x x
## [1] 5
<- (x + y)^(x - y) # สามารถตั้งชื่ออะไรก็ได้ตราบใดที่ไม่เว้นวรรค
hellothisisRNAseqworkshop hellothisisRNAseqworkshop
## [1] 64
1.2.2 Type of variable
R นั้นสามารถรองรับตัวแปรต่างๆ ได้หลากหลาย ซึ่งเป็นได้ทั้ง ตัวเลข หรือตัวอักษร หรือแม้กระทั่งเก็บหลายข้อมูลภายในตัวแปรเดียวได้
<- "Hello world" # ตัวอักษร
x x
## [1] "Hello world"
<- c(1, 2, 3, 4) # เก็บหลายตัวข้อมูลในตัวแปรเดียว
y y
## [1] 1 2 3 4
<- list(c(1, 2, 3), 4, c("hello world", "I love R")) # เก็บข้อมูลในรูปแบบ list
z z
## [[1]]
## [1] 1 2 3
##
## [[2]]
## [1] 4
##
## [[3]]
## [1] "hello world" "I love R"
class(x) # เราสามารถเช็คชนิดของตัวแปรได้โดยใช้ function class()
## [1] "character"
ลักษณะตัวแปรต่างๆ ใน R มีดังนี้
ชนิด | ตัวอย่าง | คำอธิบาย |
---|---|---|
numeric | 1, 2.3, 5 | จำนวนจริง รวมทศนิยม |
integer | 1, 2, 3 | จำนวนเต็ม เป็น subset ของ numeric |
complex | 1i | จำนวนเชิงซ้อน |
character | “สวัสดี”, “Hello world” | ตัวอักษร ต้องอยู่ในเครื่องหมาย ” ” |
factor | “a”, “b”, “c” | คล้าย character แต่มีจำนวนตัวแปรจำกัด |
logical | TRUE, FALSE | ตามหลักตรรกศาสตร์ |
vector | c(1,2,3) | หลายข้อมูลใน 1 ตัวแปร โดยต้องเป็นตัวแปรชนิดเดียวกัน |
list | list(1, c(1,3,4), “Hello”) | หลายข้อมูลใน 1 ตัวแปร โดยไม่จำเป้นต้องเป็นตัวแปรชนิดเดียวกัน |
dataframe | data.frame(x=3, y=2) | ตาราง |
1.3 Matrix and Dataframe
เนื่องจาก R นั้นเป็นโปรแกรมที่ส่วนมากใช้ในการวิเคราะห์ทางสถิติ ซึ่งเกี่ยวข้อมูลส่วนใหญ่จะถูกเก็บในรูปของตาราง R จึงมีตัวแปรที่เก็บข้อมูลในรูปของตารางโดยเฉพาะ เรียกว่า matrix และ dataframe ซึ่งเราจะใช้เป็นหลักในการวิเคราะห์ข้อมูลใน R
<- matrix(c(1, 2, 3, 4), nrow = 2)
mat mat
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
class(mat)
## [1] "matrix" "array"
<- data.frame(x = c(3, 4), y = c(2, 5), z = c(4, 7))
df df
class(df)
## [1] "data.frame"
โดยตารางนั้นจะประกอบด้วยสองส่วนหลักๆ คล้าย excel spreadsheet ได้แก่
- Column (คอลัมน์): คือ ข้อมูลในแนวตั้ง ซึ่งแถวบนสุดจะเป็นชื่อ column นั้นๆ
- Row (แถว): คือ ข้อมูลในแนวนอน
โดย matrix นั้น สามารถเก็บ variable ในรูปแบบเดียวกันได้เท่านั้น แต่ dataframe สามารถเก็บข้อมูลต่างชนิดร่วมกันได้ โดยมีข้อแม้ว่า column เดียวกัน จะต้องเป็นข้อมูลชุดเดียวกัน
1.4 Subset
เราสามารถดึงข้อมูลแค่บางส่วนออกมาจาก vector, list, matrix หรือ dataframe ได้ เรียกว่าการ subset
<- c("a", "b", "c", "d")
x 3] # subset โดยระบุตำแหน่ง x[
## [1] "c"
1:3] # subset หลายตำแหน่ง x[
## [1] "a" "b" "c"
c(1, 3)] # subset หลากหลายตำแหน่งแบบจำเพาะ x[
## [1] "a" "c"
<- list(c(1, 2, 3), c("a", "b", "c"))
y 1] # subset list ตามตำแหน่ง (จะได้ list ย่อยออกมา) y[
## [[1]]
## [1] 1 2 3
1]] # ดึงข้อมูลที่อยู่ใน list ออกมา y[[
## [1] 1 2 3
ในส่วนของ matrix และ dataframe นั้น เราสามารถ subset ตามตำแหน่งได้ โดยการระบุ row และ column ตามลำดับ
mat
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
1, 2] # 1st row, 2nd column mat[
## [1] 3
df
1, 3] # 1st row, 3rd column df[
## [1] 4
ในส่วนของ dataframe นั้น เราสามารถ subset ได้โดยใช้ชื่อของ column อีกด้วย
"x"] # subset เป็น column ย่อย df[
"x"]] # subset ข้อมูลที่อยู่ใน column นั้น df[[
## [1] 3 4
2, "x"]] # ระบุแถวด้วย df[[
## [1] 4
$x # เหมือนกัน df[['x']] df
## [1] 3 4