Может ли R различать загружаемую вручную библиотеку и зависимость? - PullRequest
2 голосов
/ 14 июня 2019

Я написал функцию для получения имени и версии всех моих загруженных пакетов:

my_lib <- function(){

  tmp <- (.packages())
  tmp_base <- sessionInfo()$basePkgs
  tmp <- setdiff(tmp, tmp_base)

  tmp <- sort(tmp)
  tmp <- sapply(tmp, function(x){
    x <- paste(x, utils::packageVersion(x), sep = ' v')
  })
  tmp <- paste(tmp, collapse=', ')

  return(tmp)
}

Это также возвращает все пакеты, загруженные как зависимости, к другим пакетам (например, я загружаю car, а carData загружается как зависимость).

Мне интересно, есть ли способ вернуть только те пакеты, которые я загрузил вручную (например, просто car)? Может ли R сказать разницу между загруженными вручную и загруженными в качестве зависимости?

Edit:

Добавлена ​​строка для удаления базовых пакетов с помощью sessionInfo()

1 Ответ

1 голос
/ 15 июня 2019

R имеет небольшую разницу между загруженным пакетом и прикрепленным пакетом.Пакет присоединяется при использовании функции library и делает его экспортированные функции «видимыми» для глобальной среды пользователя.Если пакет присоединен, его пространство имен было загружено, но не всегда верно обратное.

Каждый пакет может определять два основных типа зависимостей: Depends и Imports.Пакеты в первом присоединяются, как только зависимый пакет присоединяется, но пакеты в последнем загружаются только.

Это означает, что вы не можете полностью различить, потому что вы можете вызвать library дляконкретный пакет, но любые пакеты, на которых он Depends также будет прикреплен.Тем не менее, вы можете различать загруженные и присоединенные пакеты с помощью loadedNamespaces() и search().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...