Разница между 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