Как выгрузить пакет без перезапуска 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)