是否有一种在R中生成所需软件包列表的函数?类似于 "pip freeze",这样我们可以快速复制环境?
是否有一种在R中生成所需软件包列表的函数?类似于 "pip freeze",这样我们可以快速复制环境?
感谢您提供明确的信息。既然您提到了复制环境,以下是一些关于可用软件包的可用性和命名空间的信息。
除了@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()
吗? - Rich ScrivensessionInfo()
可能会引起兴趣。 - Dason