Есть ли функция, с помощью которой мы можем создать список необходимых пакетов в R? Что-то похожее на «заморозку пипсов», чтобы мы могли быстро дублировать среды?
Можем ли мы создать список загруженных пакетов в R?
Ответы (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
должна дать вам то, что вы хотите ( очевидно, также подберут пакеты, включенные, но не используемые, или закомментированные)
search()
? - person Rich Scriven   schedule 03.05.2014sessionInfo()
может быть интересно - person Dason   schedule 03.05.2014