Я хотел бы выгрузить пакет без необходимости перезапуска R (в основном потому, что перезапуск R, когда я пробую разные, конфликтующие пакеты, вызывает разочарование, но, возможно, это можно использовать в программе, чтобы использовать одну функцию, а затем другую - хотя пространство имен ссылки, вероятно, лучшая идея для этого использования).
?library
не показывает никаких опций, которые могли бы выгрузить пакет.
Существует предложение, которое detach
может выгрузить пакет, но следующие оба не удаются:
detach(vegan)
Ошибка в
detach(vegan)
: неверныйname
аргумент
detach("vegan")
Ошибка в
detach("vegan")
: неверныйname
аргумент
Так как же выгрузить пакет?
.libPaths()
Дает вам пути ко всем библиотекам в вашей системе.library
в двух отношениях: 1 - это не то же использованиеlibrary
, что и в других местах, и 2 - термин используетсяlibrary()
для загрузки ... не библиотека, но пакет.require
» или «отменаlibrary
», потому что именно так я обычно загружаю «пакеты». Таким образом, правильное название делает вопрос более правильным, но также труднее найти.Ответы:
Попробуйте это (см.
?detach
Для более подробной информации):Можно одновременно загрузить несколько версий пакета (например, если у вас есть версия для разработки и стабильная версия в разных библиотеках). Чтобы гарантировать, что все копии отделены, используйте эту функцию.
Использование, например
или
источник
> detach("package:MASS", unload=TRUE) Error in detach("package:MASS", unload = TRUE) : invalid 'name' argument
Вы также можете использовать
unloadNamespace
команду, как в:Функция отсоединяет пространство имен перед его выгрузкой.
источник
Вы можете снять флажок с кнопки в RStudio (пакеты).
источник
detach("package:packageToUnload", unload=TRUE)
команды и ничем не отличается от уже предложенного решения.Я попробовал то, что Кохске написал в качестве ответа, и снова получил ошибку, поэтому я провел некоторый поиск и обнаружил, что это работает для меня (R 3.0.2):
или также
источник
Когда вы собираетесь туда и обратно между сценариями он может только иногда необходимо выгрузить пакет. Вот простой оператор IF, который предотвратит появление предупреждений, если вы попытаетесь выгрузить пакет, который еще не был загружен.
Включение этого в начало сценария может быть полезным.
Я надеюсь, что это делает ваш день!
источник
detach(package:PackageName)
работает и нет необходимости использовать кавычки.источник
Вы можете попробовать все, что хотите, чтобы удалить пакет (и все зависимости, которые он ввел вместе с ним),
unloadNamespace()
но объем памяти все равно останется. И нет,detach("package:,packageName", unload=TRUE, force = TRUE)
работать тоже не будет.Из новой консоли или
Session > Restart R
проверьте память с помощьюpryr
пакета:Проверь мой
sessionInfo()
Давайте загрузим
Seurat
пакет и проверим новый объем памяти :Давайте использовать,
unloadNamespace()
чтобы удалить все:Теперь проверьте
sessionInfo()
:Проверьте объем памяти :
Ссылка на демонстрацию ролей
источник
Я хотел бы добавить альтернативное решение. Это решение не дает прямого ответа на ваш вопрос о выгрузке пакета, но, IMHO, предоставляет более чистую альтернативу для достижения желаемой цели, которая, как я понимаю, в целом связана с предотвращением конфликтов имен и пробой различных функций, как указано:
Решение
Функция,
with_package
предлагаемая черезwithr
пакет, дает возможность:пример
geom_point
используемый в примере недоступен из глобального пространства имен. Я считаю, что это может быть более чистый способ обработки конфликтов, чем загрузка и выгрузка пакетов.источник
Обратите внимание, что вы можете использовать только
unload()
один раз. Если вы используете его второй раз без повторногоlibrary()
запуска, вы получите не очень информативное сообщение об ошибке, недопустимый аргумент 'name' :Создано 2020-05-09 пакетом представлением (v0.3.0)
источник
Просто перейдите в окно OUTPUT, затем щелкните значок Packages (он расположен между иконками Plot и Help ). Удалите « галочку / галочку » из пакета, который вы хотите выгрузить.
Для повторного использования пакета просто поставьте « галочку или галочку » перед пакетом или используйте:
источник
Другой вариант
Это , по- видимому , также имеет дело с вопросом о зарегистрированных методов S3, которые не удаляются с
unloadNamespace()
источник