Разница между require() и библиотекой() в r


Для загрузки пакетов в R можно использовать функции require() и Library() , но у них есть небольшое различие:

  • require() покажет предупреждение, если пакет не установлен, а затем продолжит выполнение кода.
  • Library() выдаст ошибку и остановит выполнение кода.

Из-за этого различия метод require() обычно используется только в том случае, если вы загружаете пакеты в функцию, чтобы функция продолжала работать, даже если пакет не существует.

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

Это то, о чем вам следует знать как можно раньше при написании кода.

Следующий пример иллюстрирует разницу между функциями require() и Library() на практике.

Пример: разница между require() и Library() в R

Предположим, мы хотим загрузить набор данных BostonHousing из пакета mlbench , но предположим, что пакет mlbench еще не установлен.

Следующий код демонстрирует, как использовать функцию библиотеки() , чтобы попытаться загрузить этот пакет и выполнить анализ данных в наборе данных 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 еще не установлен, мы получаем ошибку при использовании функции библиотеки() , а остальная часть кода даже не выполняется.

Это полезно, поскольку сразу сообщает нам, что этот пакет не установлен и что нам необходимо установить его, прежде чем продолжить.

Однако предположим, что вместо этого мы используем 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *