Как выгрузить пакет без перезапуска R - PullRequest
468 голосов
/ 08 августа 2011

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

?library не показывает никаких опций, которые могли бы выгружать пакет.

Существует предложение о том, что detach может выгрузить пакет, но оба следующих сбоя:

detach(vegan)

Ошибка в detach(vegan): неверный name аргумент

detach("vegan")

Ошибка в detach("vegan"): неверный name аргумент

Так как мне выгрузить пакет?

Ответы [ 7 ]

582 голосов
/ 08 августа 2011

Попробуйте это (см. ?detach для более подробной информации):

detach("package:vegan", unload=TRUE)

Возможно иметь несколько загруженных версий пакета одновременно (например, если у вас есть версия для разработки)и стабильная версия в разных библиотеках).Чтобы отменить гарантию того, что все копии отсоединены, используйте эту функцию.

detach_package <- function(pkg, character.only = FALSE)
{
  if(!character.only)
  {
    pkg <- deparse(substitute(pkg))
  }
  search_item <- paste("package", pkg, sep = ":")
  while(search_item %in% search())
  {
    detach(search_item, unload = TRUE, character.only = TRUE)
  }
}

Использование, например,

detach_package(vegan)

или

detach_package("vegan", TRUE)
72 голосов
/ 11 марта 2015

Вы также можете использовать команду unloadNamespace, например:

unloadNamespace("sqldf")

Функция отсоединяет пространство имен перед его выгрузкой.

24 голосов
/ 05 июля 2015

вы можете снять флажок в поле RStudio (пакеты)

8 голосов
/ 11 июня 2014

Я попробовал то, что написал kohske как ответ, и я снова получил ошибку, поэтому я сделал некоторый поиск и нашел это, которое работало для меня (R 3.0.2):

require(splines) # package
detach(package:splines)

или также

library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)
7 голосов
/ 26 апреля 2017

Когда вы переходите между сценариями назад и вперед, может потребоваться только , иногда , чтобы выгрузить пакет. Вот простой оператор IF, который предотвратит появление предупреждений, если вы попытаетесь выгрузить пакет, который в данный момент не был загружен.

if("package:vegan" %in% search()) detach("package:vegan", unload=TRUE) 

Включение этого в начало скрипта может быть полезным.

Я надеюсь, что это сделает ваш день!

6 голосов
/ 22 июля 2018

detach(package:PackageName) работает и нет необходимости использовать кавычки.

0 голосов
/ 20 июня 2016

Просто перейдите в окно OUTPUT, затем щелкните значок Packages (он расположен между Plot и Help icons). Удалите « галочку / галочку » из пакета, который вы хотите выгрузить.

Для повторного использования пакета просто поставьте " галочку или галочку " перед пакетом или используйте:

library (lme4)
...