ในการเขียน code เรามักจะเจอกับงานที่เราต้องทำซ้ำ ๆ เช่น เปลี่ยนตัวเลขในช่วงที่กำหนด (เช่น 80 ถึง 100) ให้เป็นเกรด (เช่น A)
แทนที่เราจะเขียน code ใหม่ทุกครั้งที่เราเจอตัวเลข (เช่น 89, 82, 91) เราสามารถใช้ control flow เข้ามาช่วย automate งาน ลดเวลาและภาระงานของเราลงไปได้
.
ในบทความนี้ เราจะมาดูวิธีเขียน control flow ในภาษา R กัน:
- If-else:
ifelseelse if
- Loops:
forwhile
- Loop control:
nextbreak
ถ้าพร้อมแล้ว มาเริ่มกันเลย
- 🕹️ If-Else
- 🔁 Loops
- 🚸 Loop Control
- 💪 Summary
- 🗒️ Practice Control Flow
- 😺 GitHub
- 📃 References
- ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา
🕹️ If-Else
ในการเขียน if-else เรามี 3 syntax ที่ต้องทำความเข้าใจ:
ifelseelse if
.
1️⃣ if
เราใช้ if เพื่อกำหนดเงื่อนไขในการทำงาน
เช่น ถ้าคะแนนมากกว่า 60 ให้ผ่าน:
if (score >= 60) {
print("Pass")
}
ถ้าไม่ตรงกับเงื่อนไข R จะรัน code บรรทัดถัดไป
.
2️⃣ else
เราใช้ else เพื่อกำหนด action ที่ต้องทำเมื่อข้อมูลไม่เข้าเงื่อนไข
เช่น ถ้าน้อยกว่า 60 ให้ไม่ผ่าน:
if (score >= 60) {
print("Pass")
} else {
print("Fail")
}
ในครั้งนี้ R จะแสดงคำว่า “Pass” หรือ “Fail” ก่อนจะรัน code บรรทัดถัดไป
.
3️⃣ else if
ถ้าเรามีมากกว่า 2 เงื่อนไข ให้ใช้ else if เพื่อกำหนดเงื่อนไขเพิ่มเติม
เช่น ตัดเกรดตามช่วงคะแนน:
if (score >= 90) {
print("A")
} else if (score >= 80) {
print("B")
} else if (score >= 70) {
print("C")
} else if (score >= 60) {
print("D")
} else {
print("F")
}
ใน code นี้ R จะรันแต่ละบรรทัด และถ้าข้อมูลที่มีตรงกับเงื่อนไข ก็จะทำตาม action ในบรรทัดนั้น
เช่น เรากำหนดให้:
score <- 71
R จะรัน else if จนถึงบรรทัดที่ 5 แล้วทำ action ที่อยู่ในบรรทัด 6:

if, else if, else🔁 Loops
Loops ใช้ในการทำ task ซ้ำเรื่อย ๆ ตามเงื่อนไขที่กำหนด
เราสามารถเขียน loop ได้ 2 แบบ คือ:
forwhile
.
1️⃣ for
for ใช้สำหรับทำงานซ้ำ ๆ ที่เรารู้ว่าจะต้องทำกี่ครั้ง
เช่น เรามีรายชื่อเพื่อนที่เราอยากจะทักทาย:
friends <- c("John",
"Sarah",
"Emma",
"Mike")
เราสามารถใช้ for loop ช่วยได้แบบนี้:
for (friend in friends) {
print(paste("Hello,", friend))
}
ผลลัพธ์:

.
2️⃣ while
เราใช้ while เมื่อต้องทำงานซ้ำ ๆ ที่เราไม่รู้ว่าจะต้องทำกี่ครั้ง
โดย while จะทำงานไปเรื่อย ๆ จนกว่าเงื่อนไขที่กำหนดจะไม่เป็นจริง
เช่น ทอยเต๋าเรื่อย ๆ จนกว่าจะได้เลข 6:
set.seed(42)
roll <- sample(1:6, 1)
while (roll != 6) {
print(paste("Rolled:", roll, "Not yet..."))
roll <- sample(1:6, 1)
}
print("You rolled a 6! Congratulations!")
อธิบาย code:
| Code | Explain |
|---|---|
set.seed(42) | ทำให้ code ให้ผลลัพธ์เหมือนกันทุกครั้ง |
sample(1:6, 1) | สุ่ม 1 เลข ระหว่าง 1 ถึง 6 |
while (roll != 6) {...} | จนกว่า roll จะเท่ากับ 6 ให้ทำ action ใน {...} |
print("You rolled a 6! Congratulations!") | ถ้าหลุดจาก while loop แล้ว ให้ print “You rolled a 6! Congratulations!” |
ถ้ารัน code แล้ว เราจะได้ผลลัพธ์แบบนี้:

จะเห็นว่า while loop หยุดเมื่อ roll != 6 ไม่เป็นจริง (เมื่อ roll = 6)
🚸 Loop Control
ในการเขียน for และ while loops เรามี 2 statements ที่ช่วยกำกับ loops ได้ คือ:
nextbreak
.
1️⃣ next
next ใช้เพื่อข้ามข้อมูลที่เราไม่ต้องการให้เกิด action
เช่น เรามี list ของสี:
colours <- c("🟢", "🔴", "🔵", "🔴", "🟠", "🟢")
ซึ่งเราต้องการ print เฉพาะสีโทนเย็น (skip สีโทนร้อน เช่น 🔴, 🟠) เราสามารถใช้ next คู่กับ if และ for ได้แบบนี้:
for (colour in colours) {
if (colour == "🔴" | colour == "🟠") next
print(colour)
}
ผลลัพธ์:

nextจะเห็นได้ว่า code ของเราข้ามข้อมูลที่เป็นสีโทนร้อน และ print เฉพาะสีโทนเย็นออกมา
.
2️⃣ break
break ทำหน้าที่คล้าย next
แต่แทนที่จะข้ามข้อมูลไป break จะหยุดการทำงานของ loop และปล่อยให้ R รัน code บรรทัดหลังจาก loop ได้
เช่น เรามี while loop ที่นับเลขตั้งแต่ 10 ถึง 0:
time <- 10 # Start countdown
while (time > 0) {
print(paste("Counting down:", time))
time <- time - 1
}
ถ้าเราไม่ใส่ break, while loop ของเราจะนับเลขถึง 0:

while without break.
แต่ถ้าเราใส่ break เข้าไป while loop จะหยุดนับ ณ ตัวเลขที่เรากำหนด:
time <- 10 # Start countdown
while (time > 0) {
if (time == 4) {
print("Countdown stopped.")
break # Stop the loop when time reaches 4
}
print(paste("Counting down:", time))
time <- time - 1
}
ผลลัพธ์:

while with breakจะเห็นได้ว่า break ทำให้ while loop หยุดทำงาน เมื่อนับถึง 4
💪 Summary
ในบทความนี้ เราเรียนรู้วิธีเขียน control flow ใน R กัน:
If-else:
| Statement | Description |
|---|---|
if | กำหนด 1 เงื่อนไข |
else | ทำ action เมื่ออยู่นอกเงื่อนไข |
else if | เพิ่มเงื่อนไข |
Loops:
| Statement | Description |
|---|---|
for | repeat task เมื่อรู้ว่า action ที่ต้องทำจะเกิดขึ้นกี่ครั้ง |
while | repeat task เมื่อไม่รู้ว่า action ที่ต้องทำจะเกิดขึ้นกี่ครั้ง |
Loop control:
| Statement | Description |
|---|---|
next | Skip ข้อมูลใน loop |
break | หยุด loop |
🗒️ Practice Control Flow
แม้ว่าตัวอย่างในบทความนี้จะเป็นตัวอย่างง่าย ๆ แต่ control flow เป็นการเขียน code ที่มีประโยชน์มาก และสามารถใช้แก้ปัญหาทั้งเล็กและใหญ่ในโลกจริงได้ เช่น:
- ส่ง update ข้อมูล PM2.5 รายวัน
- เช็ก username และ password เพื่อยืนยันการเข้าสู่ระบบ
- ทำระบบสั่งอาหารและจ่ายเงินออนไลน์
- สร้างเกมเป่ายิ้งฉุบ
- สร้างระบบกดเงิน ATM
และอีกมากมาย
.
สำหรับคนที่สนใจสามารถลองเขียน control flow เพื่อแก้ปัญหาเหล่านี้ได้
.
ติดตั้ง R และ RStudio เพื่อใช้งาน R:
- Install R: https://cran.r-project.org/bin/windows/base/
- Install RStudio: https://posit.co/download/rstudio-desktop/
- ใช้ RStudio แบบออนไลน์: https://posit.cloud/
😺 GitHub
ดูตัวอย่าง code ในบทความนี้ได้ที่ GitHub
📃 References
✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา
📕 ขอฝากหนังสือเล่มแรกในชีวิตด้วยนะครับ 😆
🙋 ใครที่กำลังเรียนจิตวิทยาหรือทำงานสายจิตวิทยา และเบื่อที่ต้องใช้ software ราคาแพงอย่าง SPSS และ Excel เพื่อทำข้อมูล
💪 ผมขอแนะนำ R Book for Psychologists หนังสือสอนใช้ภาษา R เพื่อการวิเคราะห์ข้อมูลทางจิตวิทยา ที่เขียนมาเพื่อนักจิตวิทยาที่ไม่เคยมีประสบการณ์เขียน code มาก่อน
ในหนังสือ เราจะปูพื้นฐานภาษา R และพาไปดูวิธีวิเคราะห์สถิติที่ใช้บ่อยกัน เช่น:
- Correlation
- t-tests
- ANOVA
- Reliability
- Factor analysis
🚀 เมื่ออ่านและทำตามตัวอย่างใน R Book for Psychologists ทุกคนจะไม่ต้องพึง SPSS และ Excel ในการทำงานอีกต่อไป และสามารถวิเคราะห์ข้อมูลด้วยตัวเองได้ด้วยความมั่นใจ
แล้วทุกคนจะแปลกใจว่า ทำไมภาษา R ง่ายขนาดนี้ 🙂↕️
👉 สนใจดูรายละเอียดหนังสือได้ที่ meb:
