Временная загрузка и выгрузка пакетов в функции R.

#r #namespaces #packages

#r #пространства имен #пакет

Вопрос:

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

Для того, чтобы сделать это, мне нужно require временно удалить пакет, чтобы я мог получить доступ к его наборам данных. Проблема, с которой я сталкиваюсь, заключается в том, что требование пакета также вносит множество дополнительных элементов в путь поиска и загруженные пространства имен, помимо рассматриваемого пакета. Я хочу, чтобы моя функция приводила в порядок саму себя, но я не могу найти хороший способ для detach всего, что было импортировано, когда требовался пакет. В частности, detach кажется, что отсоединяется только пакет, но не какой-либо другой импортированный материал.

Есть какие-нибудь советы?

Комментарии:

1. Доступ к экспортируемым объектам пакета (включая наборы данных) можно получить с помощью :: . Например MASS::Insurance

2. Верно, но пакет, который я пишу, не будет заранее знать, какие наборы данных доступны в запрошенном пакете. Мне нужно прикрепить запрошенный пакет, прежде чем я узнаю, какие наборы данных доступны в этом пакете.

Ответ №1:

Я не уверен, с какой IDE вы работаете, но многие из них имеют «завершение табуляции». Если я наберу:……. ?unload на своей консоли и нажму <tab> , я сразу увижу ??unloadNamespace … так что это была бы разумная функция для исследования. Сначала вам следует взглянуть на:

      ?unloadNamespace
  

… а затем решите, достаточно ли этого. Также существует detach функция, у которой есть ссылка на связанную с ней страницу справки на этой странице справки.

Комментарии:

1. Ни detach ни unloadNamespace не выполняйте то, что я запрашиваю.