是否有一个函数可以在R中生成所需包的列表?类似于" pip freeze"所以我们可以快速复制环境?
答案 0 :(得分:3)
谢谢你不要模糊。由于您提到了重复环境,因此这里提供了有关这些可用软件包的可用性和命名空间的一些信息。
除了@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>
答案 1 :(得分:2)
如果您在运行相关代码
后表示&#34; :loadedNamespaces()
(仅针对包名称,或)search()
正如@Richard Scriven所说但如果你的意思是 静态分析有问题的代码而不运行 ,那么就没有工具了,但是勉强egrep -R -w '(require|include|source)' *.r
的输出应该是给你你想要的东西(显然也会拿到包括但未使用或注释掉的包裹)