是否有一个函数可以在 R 中生成所需包的列表?类似于“pip freeze”的东西,所以我们可以快速复制环境?
问问题
5110 次
2 回答
5
谢谢你不含糊。由于您提到了复制环境,这里有一些关于这些可用包的可用性和命名空间的信息。
除了@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>
于 2014-05-03T05:37:58.647 回答
4
如果您的意思是“在运行相关代码之后”:
loadedNamespaces()
(仅适用于包名称,或)search()
正如@Richard Scriven 所说
但是如果你的意思是静态分析有问题的代码而不运行它,我不知道有什么工具,但是调整输出egrep -R -w '(require|include|source)' *.r
应该会给你想要的东西(显然也会选择包含但未使用或注释掉的包)
于 2014-05-03T01:48:14.730 回答