我想知道是否有使用install.packages()或其他相关功能的方法来执行以下操作:只tar.gz将指定包及其所有依赖项的源(即文件)下载到指定的文件夹(在Windows上).
这样做的一个原因是:假设我有一个未启用Internet访问的Linux帐户.为了在Linux机器上安装软件包,我首先要在我的Windows机器上下载所有需要的源代码,然后将它们ftp到Linux机器上,然后使用它们在Linux机器上安装
install.packages('/home/me/R/Packages/blah.tar.gz', repos = NULL)
Run Code Online (Sandbox Code Playgroud)
seb*_*n-c 38
我最近有一个问题,我想下载所有依赖项,我已经解决了它:
说我想所有的依赖和进口ggplot2和MASS:
getPackages <- function(packs){
packages <- unlist(
tools::package_dependencies(packs, available.packages(),
which=c("Depends", "Imports"), recursive=TRUE)
)
packages <- union(packs, packages)
packages
}
packages <- getPackages(c("ggplot2", "MASS"))
Run Code Online (Sandbox Code Playgroud)
我现在可以将软件包下载到另一个目录.
download.packages(packages, destdir="whereyouactuallywantthefiles",
type="source")
Run Code Online (Sandbox Code Playgroud)
如果您想在Linux PC上创建本地存储,请按照此处的说明进行操作.
Dir*_*tel 17
尝试download.packages(c("xts", "rms"), "c:/TEMP", .....)而不是install.packages(); 你可以在第二个参数中直接给它一个目标目录.
几年后编辑:如上所述,在其他答案和评论中,到目前为止,R的工具和工具包中已添加了几个辅助函数.[R 3.4.0将tools::CRAN_package_db()下载顶层PACKAGES.rds文件(当然,你可以只相结合download.file(),并readRDS()为太).
Rei*_*son 14
现在在基础R附带的工具包中有更好的选择:package_dependencies().例如,请参阅@ sebastian-c的答案和最近的相关用例的问答.
getDependencies()utils包中有一个未导出的函数.我还没有研究它是如何工作的,但是将它与@Dirk的答案相结合应该可以让你在那里大部分时间.
基本上,它似乎你使用它像:
utils:::getDependencies(pkgs, dependencies, available, lib)
Run Code Online (Sandbox Code Playgroud)
pkgs要安装的包的字符向量在哪里,dependencies是您想要的依赖类型(Depends,Enhances等)的字符向量,available是来自的输出,available.packages()并且lib是评估依赖项的包的库位置.
如果你调试install.packages()它基本上是在实际开始安装任何东西之前执行getDependencies()@Dirk的download.packages()步骤.