เรียนรู้วิธีติดตั้ง R packages จาก command line โดยใช้ฟังก์ชัน install.packages(), CRAN mirrors และ GitHub repositories คู่มือฉบับสมบูรณ์นี้ครอบคลุมการจัดการ packages ใน R รวมถึงการติดตั้ง โหลด และลบ packages จาก terminal
ไม่ว่าคุณจะต้องการติดตั้ง packages จาก CRAN, GitHub หรือไฟล์ในเครื่อง บทเรียนนี้จะแสดงคำสั่ง R ที่แม่นยำสำหรับการติดตั้ง packages จาก command line นอกจากนี้เรายังครอบคลุมการเลือก CRAN mirror, package dependencies, ปัญหา masking และการแก้ไขข้อผิดพลาดที่พบบ่อย
R Package Management คืออะไร? คู่มือฉบับสมบูรณ์
พูดง่ายๆ R package ประกอบด้วยชุดของ R functions เช่น datasets, ไฟล์สนับสนุน และ compiled code ที่บรรจุอย่างกระชับและกำหนดไว้อย่างชัดเจน
Packages เหล่านี้เป็นเพียงไฟล์บีบอัดที่ต้องแตกไฟล์และวางในตำแหน่งที่ถูกต้องบนเครื่องของคุณก่อนที่คุณจะสามารถใช้งานใน R ได้
กระบวนการทั้งหมดนี้เกิดขึ้นโดยอัตโนมัติและไม่ต้องการการแทรกแซงจากผู้ใช้ นอกจากซอฟต์แวร์เองแล้ว ไฟล์ติดตั้ง R ยังมี packages เริ่มต้นหรือที่แนะนำประมาณ 30 packages โดยประมาณ 7 packages จะถูกโหลดเข้าหน่วยความจำทันทีเมื่อเปิด R
Packages เหล่านี้ถูกติดตั้งในโฟลเดอร์ที่กำหนดบนคอมพิวเตอร์ของคุณและใช้สำหรับงานคำนวณที่หลากหลาย เช่น การจัดการข้อมูลและการวิเคราะห์ทางสถิติ
อย่างไรก็ตาม เนื่องจาก R เป็นภาษาโปรแกรมแบบ open-source จึงมี user-contributed packages จำนวนมากที่พร้อมใช้งานสำหรับวัตถุประสงค์ต่างๆ และเข้าถึงได้โดยทุกคน
Packages เหล่านี้สามารถเข้าถึงได้จาก เว็บไซต์ CRAN หรือ repositories ของ R ส่วนถัดไปให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีดาวน์โหลดและติดตั้ง user-contributed R packages
เปิด R และรันคำสั่งต่อไปนี้ใน R console:
search()และผลลัพธ์:

R console แสดงผลลัพธ์คำสั่ง search()
ผลลัพธ์ R ด้านบน (บรรทัดที่สองและสาม) แสดงชุดของ search path items ตัวเลขในวงเล็บเหลี่ยมแสดงตำแหน่ง index ของ unit ที่อยู่ทางขวาทันที เช่น ตัวเลข [5] บ่งบอกว่า item ที่ห้าในรายการคือ package grDevices
คุณสามารถสังเกตได้ว่าไม่ใช่ทุก packages จะมีหมายเลขตำแหน่ง [x] กำกับไว้ แต่ตราบใดที่คุณนับได้ คุณก็สามารถหาตำแหน่งที่เกี่ยวข้องได้ด้วยตัวเอง
ผลลัพธ์ข้างต้นอาจปรากฏแตกต่างกันเล็กน้อยในระบบ R ของคุณ ตัวอย่างเช่น บนหน้าจออื่นๆ หน้าต่าง R console จะถูกปรับขนาดอัตโนมัติให้พอดีกับความละเอียดที่รองรับ โดยเฉพาะความกว้าง ดังนั้น R console จะถูกปรับขนาดให้ตรงกัน
อีกเหตุผลหนึ่งอาจเป็นเพราะคุณมี packages อื่นๆ โหลดอยู่ในระบบ ไม่ว่าจะเป็นเพราะคุณติดตั้งเองหรือเพราะทีม R ได้รวม (หรือลบ) packages ปกติใน R เวอร์ชันใหม่กว่า
ต่อไป มาดู options ที่สำคัญบางอย่างในผลลัพธ์คำสั่ง search() ด้านบน:
GlobalEnv entry มักจะอยู่ในตำแหน่งแรก [1] ของ search route และไม่ใช่ R package GlobalEnv ย่อมาจาก Global Environment และแทนตำแหน่งที่ R objects ที่สร้างใหม่ถูกวางไว้ในหน่วยความจำ
Package package:base จะอยู่ตำแหน่งสุดท้ายเสมอ และไม่เหมือน packages อื่นๆ package:base ไม่สามารถลบออกได้
หากคุณใช้ RStudio คุณจะเห็น entry เพิ่มเติมที่นี่ คือ tools:rstudio นอกเหนือจากผลลัพธ์ด้านบน
โปรดจำไว้ว่า 30 default R packages ไม่ได้ถูกโหลดทั้งหมดในหน่วยความจำเมื่อเปิด R คุณสามารถใช้ฟังก์ชัน library ใน R เพื่อโหลด packages เหล่านี้หรือ packages อื่นๆ ที่ติดตั้งแล้วแต่ยังไม่ได้โหลดในหน่วยความจำ R
ตัวอย่างเช่น package MASS เป็นหนึ่งใน 30 packages ที่ติดตั้งแต่ไม่ได้โหลดในหน่วยความจำ ผมจะใช้คำสั่ง library เพื่อโหลด:
library(MASS)และผลลัพธ์:

โหลด MASS package โดยใช้คำสั่ง library()
ดังที่คุณเห็น package:MASS ถูกโหลดในตำแหน่ง [2] เมื่อติดตั้ง และ packages อื่นๆ ทั้งหมดถูกเลื่อนไปตำแหน่งที่สูงขึ้นหนึ่งตำแหน่ง
สิ่งสำคัญที่ต้องจำคือตำแหน่ง [x] ของแต่ละ package ใน search path มีความสำคัญเพราะกำหนดลำดับความสำคัญสำหรับการทำซ้ำของ functions
เมื่อเราโหลด packages เข้าหน่วยความจำ R เราทำให้แน่ใจว่า functions ใน packages เหล่านี้พร้อมใช้งานตลอด session จำไว้ว่าการจัดการหน่วยความจำมีบทบาทสำคัญในการเขียนโปรแกรม
Packages ที่ไม่จำเป็นใน session สามารถถูกยกเว้นจาก search route ได้ ในการ unload package ออกจากหน่วยความจำ คุณต้องใช้คำสั่ง detach ดังนี้:
detach(package:MASS)คุณยังสามารถลบ package ออกจากหน่วยความจำโดยระบุหมายเลขตำแหน่งดังแสดงด้านล่าง:
detach(pos=2)คุณจะลบ package stats ออกจาก R search path หากคุณรันคำสั่งก่อนหน้า เมื่อลบแล้ว คุณจะได้รับข้อความ error หากคุณต้องการใช้ functions ใน package นี้
หากคุณต้องการรายละเอียดเพิ่มเติม ดูหน้า help ของ detach สำหรับข้อมูลเพิ่มเติม คุณสามารถโหลด package ได้ทุกเมื่อที่ต้องการโดยไม่มีผลเสียต่อระบบของคุณโดยใช้คำสั่งด้านล่าง:
library(stats)หมายเหตุ: ดังที่กล่าวก่อนหน้านี้ packages package:base และ GlobalEnv ไม่สามารถลบออกได้
สิ่งสำคัญที่ต้องจำคือ packages ที่คุณโหลดด้วยตนเองโดยใช้คำสั่ง library จะถูก detach โดยอัตโนมัติเมื่อคุณออกจาก R และจะไม่ถูก reload เมื่อคุณเริ่ม R session ใหม่
และอีกสิ่งหนึ่ง คุณอาจเคยได้ยินเกี่ยวกับ user-contributed R packages หากไม่ คุณควรรู้ว่า packages เหล่านี้พัฒนาโดยผู้ใช้ R ทั่วโลกและฟรีทั้งหมด
User-contributed packages มีอยู่บน เว็บไซต์โครงการ CRAN และมีจำนวนมากสำหรับทุกสถานการณ์ที่คุณอาจต้องการ ลองไปดู
มี packages ชุมชนมากกว่า 14,000 packages พร้อมติดตั้งและใช้งานใน R ณ เวลาที่เขียนบทเรียนนี้ แม้ว่าจำนวนจะเพิ่มขึ้นทุกวัน User-contributed packages มีเป้าหมายเพื่อลดความซับซ้อนของคำสั่งจำนวนมากที่จำเป็นในการทำงานเฉพาะใน R
วิธีติดตั้ง R Packages
เมื่อเราเลือกที่จะใช้ function หรือ dataset จาก user-contributed package ใน R เราต้องทำตามสองขั้นตอนพื้นฐาน:
1. ติดตั้ง R packages โดยรันฟังก์ชัน install.packages()
หากคุณดาวน์โหลด package ด้วยตนเองจากอินเทอร์เน็ต คุณสามารถติดตั้งโดยตรงจากไฟล์ .zip หรือ .tar ที่เกี่ยวข้อง
มาติดตั้ง MySQL package สำหรับ R ด้วยวิธีนี้โดยใช้คำสั่ง:
install.packages("RMySQL")R มีแนวโน้มที่จะแสดงข้อความผลลัพธ์ต่อไปนี้ใน terminal ของคุณ:
# - Please select a CRAN mirror for use in this session -
ข้อความนี้หมายความว่า R ไม่พบ RMySQL package ใน repository และเราต้องติดตั้ง mirror ก่อน
หากคุณดาวน์โหลด package ด้วยตนเองจากอินเทอร์เน็ต คุณสามารถติดตั้งโดยตรงจากไฟล์ .zip หรือ .tar ที่เกี่ยวข้องโดยใส่ path ไปยังตำแหน่งไฟล์บนคอมพิวเตอร์ของคุณระหว่าง "" ในคำสั่งด้านบน
2. ติดตั้ง R packages โดยใช้ CRAN mirrors
ตัวอย่างเช่น เมื่อติดตั้ง R RMySQL package คุณจะถูกขอให้เลือก CRAN mirror ที่จะดาวน์โหลด package
คุณอาจได้รับหน้าต่างรายการ repository หรือ text menu พร้อมตัวเลือกบางอย่าง แต่ถ้าไม่ปรากฏ คุณยังสามารถเลือก mirror ที่จะนำเข้า packages โดยใช้ parameter repos= และหลังจากทำเช่นนั้น R จะไม่รบกวนคุณให้เลือก CRAN mirror อีก
นี่คือตัวอย่างการใช้ US mirror เพื่อรับ RMySQL package ในระบบ R ของผม:
install.packages('RMySQL', repos='http://cran.us.r-project.org')และผลลัพธ์คำสั่ง:

ติดตั้ง RMySQL package จาก CRAN mirror
ที่นี่ คุณสามารถหารายการ R mirrors ที่มีอยู่ทั้งหมด ในสถานที่ทางภูมิศาสตร์ต่างๆ คุณควรเลือก CRAN mirror ที่ใกล้ที่สุดกับตำแหน่งของคุณ โดยเฉพาะถ้าคุณมีการเชื่อมต่ออินเทอร์เน็ตที่ช้า
สุดท้าย สิ่งสำคัญที่ต้องจำคือ package ที่ขึ้นอยู่กับอีก package ไม่สามารถถูก detach ออกจากระบบได้
วิธีติดตั้ง R Packages จาก Source
การติดตั้ง R packages จาก source code ช่วยให้คุณเข้าถึง development versions ล่าสุดและอนุญาตให้คุณติดตั้ง packages ที่ไม่มีใน CRAN วิธีนี้มีประโยชน์เป็นพิเศษเมื่อคุณต้องการ features หรือ bug fixes เฉพาะที่ยังไม่ได้ release
ในการติดตั้ง R package จาก source ให้ดาวน์โหลดไฟล์ source ของ package (โดยปกติคือไฟล์ .tar.gz) จาก CRAN หรือ package repository จากนั้นใช้คำสั่งต่อไปนี้:
install.packages("/path/to/package_version.tar.gz", repos = NULL, type = "source")ตัวอย่างเช่น หากคุณดาวน์โหลด dplyr source package:
install.packages("~/Downloads/dplyr_1.0.7.tar.gz", repos = NULL, type = "source")Parameter repos = NULL บอก R ว่าคุณกำลังติดตั้งจากไฟล์ในเครื่อง ไม่ใช่จาก repository Parameter type = "source" ระบุว่านี่คือการติดตั้งจาก source
R Packages ติดตั้งอยู่ที่ไหน? (Windows, Mac, Linux)
ขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้ (Windows, macOS, Linux/UNIX) หรือสิทธิ์ผู้ใช้ของคุณ ตำแหน่งของ R packages ที่ติดตั้งอาจแตกต่างกัน รวมถึงการเข้าถึงโฟลเดอร์ติดตั้ง R package
เพื่อหาเส้นทางที่ R เก็บ packages ให้พิมพ์คำสั่งต่อไปนี้ใน R:
.libPaths()โดยทั่วไป บนเครื่อง Windows R packages จะอยู่ในโฟลเดอร์ "C:\Program Files\R"
บนเครื่อง macOS R packages มักจะติดตั้งในโฟลเดอร์ "/Library/Frameworks/R.framework/Resources/library"

ตรวจสอบเส้นทางติดตั้ง R package โดยใช้ .libPaths()
หากคุณต้องการตำแหน่งที่กำหนดเองสำหรับติดตั้ง R packages คุณจะต้องกำหนดใน .Rprofile ตัวอย่างเช่น บนคอมพิวเตอร์ Mac เราสามารถสั่งให้ R ติดตั้ง R packages ที่ตำแหน่งที่กำหนดเองโดยใช้:
.libPaths( "/Users/tex/lib/R" )ไฟล์ .Rprofile บน Windows มักจะอยู่ในโฟลเดอร์ C:\Program Files\R\R-...\etc แต่คุณสามารถระบุตำแหน่งที่กำหนดเองระหว่าง R installation wizard
R จะจำเส้นทางใหม่และติดตั้ง packages ที่ตำแหน่งนี้ตั้งแต่นี้เป็นต้นไป
วิธีติดตั้ง R Packages โดยใช้ RScript
RScript ช่วยให้คุณติดตั้ง R packages โดยตรงจาก command line โดยไม่ต้องเปิด R console วิธีนี้มีประโยชน์เป็นพิเศษสำหรับ automation, scripting และ server environments
ในการติดตั้ง R package โดยใช้ RScript จาก terminal ของคุณ ให้ใช้คำสั่งต่อไปนี้:
Rscript -e "install.packages('packagename', repos='http://cran.us.r-project.org')"ตัวอย่างเช่น เพื่อติดตั้ง ggplot2 package โดยใช้ RScript:
Rscript -e "install.packages('ggplot2', repos='http://cran.us.r-project.org')"Flag -e บอก RScript ให้รัน R code ที่ให้ไว้ในเครื่องหมายคำพูด Parameter repos ระบุ CRAN mirror ที่จะใช้ ป้องกันการแจ้งเตือนให้เลือก mirror แบบ interactive
ติดตั้งหลาย Packages ด้วย RScript
คุณสามารถติดตั้งหลาย R packages ในคำสั่ง RScript เดียวโดยใช้ฟังก์ชัน c():
Rscript -e "install.packages(c('dplyr', 'tidyr', 'ggplot2'), repos='http://cran.us.r-project.org')"วิธีติดตั้ง R Packages จาก GitHub
R packages บางตัวที่พัฒนาโดยชุมชน R อยู่บน GitHub ในการติดตั้ง R packages จาก GitHub เราต้องติดตั้ง devtools package ใน R ก่อน โดยพิมพ์คำสั่งต่อไปนี้ใน R console:
install.packages("devtools")
ติดตั้ง devtools package เพื่อเปิดใช้งานการติดตั้งจาก GitHub
devtools package และ dependencies หลายตัวถูกติดตั้งในระบบของคุณแล้ว อย่างไรก็ตาม devtools ยังไม่ได้โหลดในหน่วยความจำ R ดังนั้นเราต้องสั่งให้ R ทำโดยใช้คำสั่งต่อไปนี้:
library(devtools)ในการติดตั้ง R packages จาก GitHub ให้ไปที่ GitHub และจดชื่อผู้เขียน package และชื่อ package
ในตัวอย่างนี้ ผมจะติดตั้ง palmerpenguins package ของ Allison Horst โดยใช้ฟังก์ชัน install_github
install_github("allisonhorst/palmerpenguins")
ติดตั้ง palmerpenguins package จาก GitHub
ดังที่คุณเห็น palmerpenguins ตอนนี้อยู่ในรายการในแท็บ Packages ใน R

Palmerpenguins package แสดงในแท็บ RStudio Packages
และดังที่กล่าวก่อนหน้านี้ palmerpenguins package ไม่ได้โหลดในหน่วยความจำจนกว่าเราจะเรียกฟังก์ชัน library:
library(palmerpenguins)วิธี Uninstall R Packages
เราเห็นว่าการติดตั้ง R packages ค่อนข้างง่าย แล้วการถอนการติดตั้งล่ะ? ก็ง่ายเช่นกัน คำสั่งในการถอนการติดตั้ง R packages คือ remove.packages() ชื่อ package ต้องอยู่ระหว่าง "" ดังแสดงในตัวอย่างต่อไปนี้
ก่อนหน้านี้ เราติดตั้ง palmerpenguins package จาก GitHub โดยใช้คำสั่งด้านล่าง เราสามารถลบ package นี้ออกจาก R:
remove.packages("palmerpenguins")และผลลัพธ์:

ลบ palmerpenguins package โดยใช้ remove.packages()
Package Masking ใน R คืออะไร? (วิธีแก้ไข Function Conflicts)
User-contributed R packages บางตัวอาจมี functions ที่มีชื่อเดียวกันกับ functions ใน package อื่น ข้อความเตือนจะปรากฏใน R terminal เมื่อสถานการณ์นี้เกิดขึ้น สถานการณ์นี้เรียกว่า masking
Function ใน package เดียวกันไม่สามารถมีสองชื่อได้ และคุณไม่สามารถสร้างสองไฟล์ที่มีชื่อเดียวกันในไดเรกทอรีบนเครื่องของคุณได้ อย่างไรก็ตาม functions ใน packages ต่างกันสามารถมีชื่อเดียวกันและทำสิ่งที่แตกต่างกันโดยสิ้นเชิง
หากคุณต้องการใช้ function ที่ถูก mask โดย function ที่โหลดล่าสุด คุณมีตัวเลือกต่อไปนี้:
- Detach package ที่คุณไม่ได้ใช้โดยใช้ฟังก์ชัน
detachหรือ - ให้ package ที่คุณต้องการใช้มีความสำคัญสูงกว่าโดยโหลดก่อน packages อื่นในโปรเจกต์ของคุณ
ในการตรวจสอบว่า package ใดมีความสำคัญสูงสุด ให้ตรวจสอบ search path:
search()Package ที่มีหมายเลขตำแหน่งเล็กกว่าและใกล้กับ GlobalEnv มีความสำคัญสูงสุด
โดยสรุป user-contributed packages ควรใช้เฉพาะเมื่อคุณต้องการเท่านั้น หากคุณวางแผนที่จะไม่ใช้ package ที่โหลดในหน่วยความจำ แนวปฏิบัติที่ดีคือ detach มันเพื่อหลีกเลี่ยง function conflicts เพิ่มเติม
จำไว้ว่าเมื่อคุณออกจาก R packages ทั้งหมดที่โหลดในหน่วยความจำจะถูก detach โดยอัตโนมัติ เมื่อเริ่ม session ใหม่ R จะโหลดเฉพาะ base packages
แก้ไขข้อผิดพลาดการติดตั้ง R Package (CRAN Mirror, Dependencies, Permissions)
การติดตั้ง R packages บางครั้งอาจล้มเหลวเนื่องจากเหตุผลต่างๆ นี่คือข้อผิดพลาดที่พบบ่อยที่สุดและวิธีแก้ไข:
Error: "Please select a CRAN mirror for use in this session"
ข้อผิดพลาดนี้เกิดขึ้นเมื่อ R ไม่รู้ว่าจะใช้ CRAN mirror ใดสำหรับดาวน์โหลด packages
วิธีแก้ไข: ระบุ CRAN mirror โดยตรงในคำสั่งติดตั้งของคุณ:
install.packages("packagename", repos="http://cran.us.r-project.org")หรือตั้ง default CRAN mirror สำหรับ session ของคุณ:
options(repos = c(CRAN = "http://cran.us.r-project.org"))
install.packages("packagename")Error: "Package dependencies not available"
สิ่งนี้เกิดขึ้นเมื่อ package ต้องการ packages อื่นที่ไม่ได้ติดตั้งในระบบของคุณ
วิธีแก้ไข: ติดตั้งพร้อม dependencies enabled (โดยปกติจะเป็นค่าเริ่มต้น):
install.packages("packagename", dependencies = TRUE)Error: "Permission denied" หรือ "Cannot install to library"
สิ่งนี้เกิดขึ้นเมื่อคุณไม่มีสิทธิ์เขียนไปยังไดเรกทอรี R library
วิธีแก้ไข: ติดตั้งไปยัง user library ของคุณแทน:
install.packages("packagename", lib = Sys.getenv("R_LIBS_USER"))คำถามที่พบบ่อย
สรุป
แม้ว่าจะมีสถานการณ์อีกมากที่ต้องครอบคลุม แต่ตอนนี้คุณควรมั่นใจพอสมควรกับวิธีติดตั้ง R packages จากแหล่งต่างๆ และจัดการ R packages ในระบบของคุณ
สรุปคำสั่งหลัก:
| การดำเนินการ | คำสั่ง |
|---|---|
| ติดตั้งจาก CRAN | install.packages("package") |
| โหลดเข้าหน่วยความจำ | library(package) |
| ยกเลิกโหลดจากหน่วยความจำ | detach(package:package) |
| ติดตั้งจาก GitHub | devtools::install_github("author/package") |
| ถอนการติดตั้ง | remove.packages("package") |
| ตรวจสอบเส้นทาง | .libPaths() |
| อัปเดต | update.packages() |
ขั้นตอนต่อไป:
- เรียนรู้ วิธีติดตั้ง R และ RStudio
- สำรวจ วิธีนำเข้าไฟล์ CSV ใน R
หากบางอย่างไม่เป็นไปตามแผน คุณสามารถอ้างอิงถึงคู่มือ R ที่มีอยู่โดยรันคำสั่ง help.start() ใน R console