ความแตกต่างระหว่าง 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *