Как выгрузить пакет без перезапуска R

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

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

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

detach(vegan)

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

detach("vegan")

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

Итак, как мне разгрузить пакет?

Ответ 1

Попробуйте это (см. ?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)

Ответ 2

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

unloadNamespace("sqldf")

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

Ответ 3

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

Ответ 4

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

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

а также

library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)

Ответ 5

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

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

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

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

Ответ 6

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

Ответ 7

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

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

library (lme4)