Можем ли мы создать список загруженных пакетов в R?
Есть ли функция, где мы можем генерировать список необходимых пакетов в R? Что-то похожее на "pip freeze", чтобы мы могли быстро дублировать окружение?
2 ответа
Спасибо, что не расплывчаты. Поскольку вы упомянули дублирующиеся среды, вот некоторая информация о доступности и пространствах имен этих доступных пакетов.
В дополнение к этим функциям, упомянутым @smci, .Packages
перечислит все пакеты, доступные в пути расположения библиотеки lib.loc
, А также find.package
покажет вам путь к пакету. Имейте в виду, что find.packages
может представлять проблемы при определении доступности пакета. require
рекомендуемый метод (см. ?find.package
для объяснения).
> x <- .packages(TRUE)
> head(x)
# [1] "assertthat" "BH" "car" "data.table"
# [5] "digest" "dplyr"
> f <- find.package(x)
> sample(f, 5)
# [1] "/home/richard/R/x86_64-pc-linux-gnu-library/3.1/latticeExtra"
# [2] "/home/richard/R/x86_64-pc-linux-gnu-library/3.1/Lahman"
# [3] "/home/richard/R/x86_64-pc-linux-gnu-library/3.1/microbenchmark"
# [4] "/usr/lib/R/library/tools"
# [5] "/home/richard/R/x86_64-pc-linux-gnu-library/3.1/knitr"
Для получения списка сред с пространствами имен для этих пакетов в x
, вы можете использовать (среди других) getNamespace
> sapply(x, getNamespace)[1:3]
# $assertthat
# <environment: namespace:assertthat>
# $BH
# <environment: namespace:BH>
# $car
# <environment: namespace:car>
Если вы имели в виду "после запуска рассматриваемого кода":
loadedNamespaces()
(только для имен пакетов или)search()
как сказал @Richard Scriven
но если вы имели в виду статический анализ рассматриваемого кода без его запуска, то нет никакого инструмента, кроме искажения вывода egrep -R -w '(require|include|source)' *.r
должен дать вам то, что вы хотите (очевидно, также подберет пакеты, включенные, но не использованные или закомментированные)