ความแตกต่างระหว่าง need() และ library() ใน r
สามารถใช้ทั้งฟังก์ชัน need() และ Library() เพื่อโหลดแพ็กเกจใน R ได้ แต่จะมีความแตกต่างเล็กน้อย:
- need() จะแสดงคำเตือนหากไม่ได้ติดตั้งแพ็คเกจ จากนั้นจึงรันโค้ดต่อไป
- ไลบรารี () จะส่งข้อผิดพลาดและหยุดการเรียกใช้โค้ด
เนื่องจากความแตกต่างนี้ โดยทั่วไปแล้ว need() จะใช้เฉพาะเมื่อคุณโหลดแพ็คเกจลงในฟังก์ชัน เพื่อให้ฟังก์ชันยังคงทำงานต่อไปแม้ว่าจะไม่มีแพ็คเกจอยู่ก็ตาม
ในทางปฏิบัติ โปรแกรมเมอร์ส่วนใหญ่แนะนำให้ใช้ Library() เพราะคุณจะต้องได้รับข้อความแสดงข้อผิดพลาดแจ้งว่าไม่ได้ติดตั้งแพ็คเกจไว้
นี่คือสิ่งที่คุณควรทราบโดยเร็วที่สุดเมื่อเขียนโค้ด
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงความแตกต่างระหว่างฟังก์ชัน need() และ Library() ในทางปฏิบัติ
ตัวอย่าง: ความแตกต่างระหว่าง need() และ Library() ใน R
สมมติว่าเราต้องการโหลดชุดข้อมูล BostonHousing จากแพ็คเกจ mlbench แต่สมมติว่ายังไม่ได้ติดตั้งแพ็คเกจ mlbench
รหัสต่อไปนี้สาธิตวิธีใช้ฟังก์ชัน Library() เพื่อพยายามโหลดแพ็คเกจนี้และดำเนินการวิเคราะห์ข้อมูลบนชุดข้อมูล BostonHousing :
#attempt to load mlbench library library (mlbench) Error in library(mlbench): there is no package called 'mlbench' #load Boston Housing dataset data(BostonHousing) #view summary of Boston Housing dataset summary(BostonHousing) #view total number of rows in Boston Housing dataset nrow(BostonHousing)
เนื่องจากยังไม่ได้ติดตั้งแพ็คเกจ mlbench เราจึงได้รับข้อผิดพลาดเมื่อเราใช้ฟังก์ชัน Library() และโค้ดที่เหลือไม่ได้ถูกดำเนินการด้วยซ้ำ
สิ่งนี้มีประโยชน์เพราะจะแจ้งให้เราทราบทันทีว่าแพ็คเกจนี้ไม่ได้ติดตั้งและเราจำเป็นต้องติดตั้งก่อนดำเนินการต่อ
อย่างไรก็ตาม สมมติว่าเราใช้ need() เพื่อโหลดแพ็คเกจ mlbench แทน:
#attempt to load mlbench library require (mlbench) Warning message: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : there is no package called 'mlbench' #load Boston Housing dataset data(BostonHousing) Warning message: In data(BostonHousing) : data set 'BostonHousing' not found #view summary of Boston Housing dataset summary(BostonHousing) Error in summary(BostonHousing): object 'BostonHousing' not found #view total number of rows in Boston Housing dataset nrow(BostonHousing)
ในตัวอย่างนี้ เราไม่ได้รับข้อความแสดงข้อผิดพลาดจนกว่าเราจะพยายามใช้ฟังก์ชัน summary() เพื่อสรุปชุดข้อมูล BostonHousing
แต่เราได้รับคำเตือนหลังจากใช้ฟังก์ชัน need() และโค้ดที่เหลือยังคงดำเนินการต่อไปจนกว่าเราจะพบข้อผิดพลาด
ตัวอย่างนี้แสดงให้เห็นถึงความแตกต่างระหว่าง ไลบรารี () และ need () ใน R: ฟังก์ชัน ไลบรารี () ก่อให้เกิดข้อผิดพลาดทันทีและไม่ได้รันโค้ดที่เหลือเนื่องจากไม่ได้โหลด mlbench
นี่คือเหตุผลว่าทำไมในสถานการณ์ส่วนใหญ่ คุณจะต้องใช้ฟังก์ชัน Library() เมื่อโหลดแพ็คเกจ
โบนัส: ตรวจสอบว่ามีการติดตั้งแพ็คเกจเฉพาะหรือไม่
เราสามารถใช้ฟังก์ชัน system.file() เพื่อตรวจสอบว่ามีการติดตั้งแพ็คเกจเฉพาะในสภาพแวดล้อม R ปัจจุบันของเราหรือไม่
ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อตรวจสอบว่ามีการติดตั้งแพ็คเกจ ggplot2 ในสภาพแวดล้อม R ปัจจุบันหรือไม่:
#check if ggplot2 is installed system. file (package=' ggplot2 ') [1] "C:/Users/bob/Documents/R/win-library/4.0/ggplot2"
เนื่องจากติดตั้ง ggplot2 แล้ว ฟังก์ชันจึงส่งคืนพาธของไฟล์ที่ติดตั้งแพ็กเกจไว้
ตอนนี้สมมติว่าเราตรวจสอบว่ามีการติดตั้งแพ็คเกจ mlbench หรือไม่:
#check if mlbench is installed system. file (package=' mlbench ') [1] ""
ฟังก์ชันส่งคืนสตริงว่าง ซึ่งบอกเราว่าแพ็กเก จ mlbench ไม่ได้ถูกติดตั้งในสภาพแวดล้อมปัจจุบันของเรา
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีโหลดหลายแพ็คเกจใน R
วิธีล้างสภาพแวดล้อมใน R
วิธีล้างแปลงทั้งหมดใน RStudio