วิธีรัน R Script ใน Terminal

บทความนี้แอดมาแนะนำวิธีการรัน R script ใน terminal (linux) ง่ายๆด้วยคำสั่ง Rscript

แล้ว R คืออะไรนะแอด?

R คือภาษาหลักที่ data analyst ใช้ในการจัดการ data วิเคราะห์ข้อมูลและรันผลสถิติ จะทำ machine learning ก็ได้ สร้าง visualization สวยๆก็ได้ ทำได้หมดเลย ยั๊ง มาเรียน R กันดีกว่าครับ 555+

🌵 ตัวอย่างวันนี้แอดใช้ replit.com นะครับ online text editor มี console/ terminal พร้อมใช้งานเลย

Table of Contents

Source .R Script

ขั้นตอนการรัน R script ใน terminal แบ่งเป็น 2 steps ง่ายๆ (เหมือนกับการเขียนภาษาอื่นๆ เช่น Python, JavaScript เลย)

  1. เปิด text editor ที่เราชอบ เขียนโค้ดและ save file นามสกุล .R
  2. รัน Rscript command ใน terminal เพื่อ execute script ของเรา

🌵 เวลาเราเขียนโปรแกรมใน R และ save file .R เราเรียกไฟล์นี้ว่า script

ตัวอย่างการรัน R script ใน terminal ของ REPLIT
ตัวอย่างการรัน R script ใน terminal ของ REPLIT

มาลองเขียน script ง่ายๆด้วยกัน สั่ง print() สองประโยค save file ชื่อว่า hello.r

# hello.r
print("hello world")
print("this is an R script")

ไปที่หน้าต่าง Console (Terminal) ของ replit แล้วพิมพ์คำสั่ง Rscript ตามด้วยชื่อไฟล์ กด enter หนึ่งครั้ง

Rscript hello.r

# [1] "hello world"
# [1] "this is an R script"

🌵 ทำไมเราถึงต้องรัน Rscript แบบนี้ด้วย?

เพราะบางครั้งเราอาจจะต้องส่ง script ไปรันบน Linux server ที่ไม่มี RStudio ให้ใช้งาน เวลาไปรันบน Linux ทีม DevOps จะทำพวก automation หรือตั้งเวลารัน script ด้วย cron job

Get User Input in Terminal

เราสามารถรับ user input ใน terminal ได้ด้วย ตัวอย่างเช่นการสร้าง chatbot พูดคุยแบบ interactive ใน terminal ใช้ฟังก์ชัน readLines() และตั้งค่า "stdin" และ n=1

  • stdin คือ standard input ที่มาจาก terminal
  • n=1 คือจำนวน input ที่ต้องรับใน terminal

มาลองสร้าง chatbot <order pizza> โดยคำถามแรก บอทของเราจะขอทราบชื่อของ user ก่อน

# chatbot.r
print("Hi, Welcome to our app.")

# get input from user
print("What's your name?")
input1 <- readLines("stdin", n=1)

# greeting a customer
print(paste("Nice to meet you", input1))

คำถามที่สอง user สามารถเลือกหน้าพิซซ่าจาก vector ที่เราเตรียมไว้ Hawaiian, Cheese, Chicken BBQ

# pizza menu
pizzas <- c("Hawaiian", "Cheese", "Chicken BBQ")

# ask user about the order
print("What would you like to order?")
print("[1] Hawaiian [2] Cheese [3] Chicken BBQ")
input2 <- as.numeric(readLines("stdin", n=1))

order <- pizzas[input2]

# confirm an order
print(paste("We are processing your order:", order, "Pizza."))

ตัวอย่างการรันไฟล์ chatbot.r ใน terminal

Example chatbot in R

อันนี้เป็น chatbot พื้นฐานที่ทุกคนสามารถสร้างได้ง่ายๆ มี dialogues และ choices ให้ user เลือกตาม scenario ที่เราเตรียมไว้

Import Functions

🌵 Tip สุดท้าย เราสามารถ import functions จากไฟล์ .R อื่นๆได้ด้วย ในตัวอย่างนี้แอดสร้าง R script ไว้สองไฟล์ชื่อว่า functions.r และ main.r

  • functions.r – แอดเขียน 2 functions ไว้ในไฟล์นี้ชื่อว่า greeting() และ greeting_name()
  • main.r – เรียกใช้ functions ที่เราเตรียมไว้ที่ไฟล์ functions.r
# functions.r
greeting <- function() print("Good Morning")
greeting_name <- function(name) print(paste("Good Morning", name))

ในไฟล์ main.r เราใช้ฟังก์ชัน source() เพื่ออ่านไฟล์ R script ที่เราต้องการ

พอเรา source ไฟล์แล้ว ก็จะสามารถเรียกใช้งาน functions หรือ objects ต่างๆที่เราประกาศไว้ใน function.r ได้หมดเลย

# main.r
# import functions from functions.r
source("functions.r")

greeting()
greeting_name(name = "Lisa")

🌵 Concept การ import/ source ไฟล์นี้มาจากสาย software development เพื่อช่วยให้การเขียนโค้ดของเราเป็นระบบ มีระเบียบมากยิ่งขึ้น i.e. modular programming

หวังว่าบทความนี้จะเป็นประโยชน์กับเพื่อนๆทุกคนที่กำลังฝึกเขียน R อยู่นะครับ ถ้าอยากรู้เรื่องอะไรเพิ่มเติม comment ในบทความนี้ได้เลย 😆

Leave a Reply