Різниця між require() і library() у r


Обидві функції require() і library() можна використовувати для завантаження пакетів у R, але вони мають тонку різницю:

  • require() покаже попередження, якщо пакет не встановлено, а потім продовжить виконання коду.
  • library() видасть помилку та зупинить виконання коду.

Через цю різницю, require() зазвичай використовується, лише якщо ви завантажуєте пакети у функцію, щоб функція продовжувала працювати, навіть якщо пакет не існує.

На практиці більшість програмістів рекомендують використовувати бібліотеку() , оскільки ви захочете отримати повідомлення про помилку, яке інформує вас про те, що пакет не встановлено.

Це те, про що ви повинні знати якомога раніше під час написання коду.

Наступний приклад ілюструє різницю між функціями require() і library() на практиці.

Приклад: різниця між require() і 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() , а решта коду навіть не виконується.

Це корисно, тому що воно відразу повідомляє нам, що цей пакет не встановлено і що нам потрібно встановити його, перш ніж продовжити.

Однак припустімо, що замість цього ми використовуємо require() для завантаження пакета 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 .

Натомість ми отримуємо попередження після використання функції require() , а решта коду продовжує виконуватися, доки не виникне помилка.

Цей приклад ілюструє різницю між бібліотекою() і require() у R: функція бібліотеки() негайно створює помилку та не виконує решту коду, оскільки mlbench не завантажується.

Ось чому в більшості випадків ви захочете використовувати функцію бібліотеки() під час завантаження пакетів.

Бонус: перевірте, чи встановлено певний пакет

Ми можемо використовувати функцію 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *