我想知道是否有一个方法来使用install.packages()或其他相关的功能,以执行以下操作:只下载指定的包及其所有依赖关系的源(即tar.gz文件)到指定的文件夹(在Windows上) 。
这样做的一个原因是:说我有一个Linux帐户,没有启用互联网访问。为了在Linux机器上安装软件包,我首先在我的Windows机器上下载所有需要的源,然后ftp他们到Linux机器,并安装在Linux机器上使用
install.packages('/home/me/R/Packages/blah.tar.gz',repos = NULL)
现在有更好的选择为这个在工具包附带base R:package_dependencies()。例如,从@ sebastian-c的答案和这个
recent Q&A相关的用例。
utils包中有一个未导出的getDependencies()函数。我没有研究它是如何工作,但结合使用@ Dirk的答案应该让你大部分的方式在那里。
基本上虽然,它似乎你使用它像:
utils:::getDependencies(pkgs,dependencies,available,lib)
其中pkgs是要安装的软件包的字符向量,依赖关系是您想要的依赖关系类型的字符向量(Depends,Enhances等),available.packages()的输出可用,lib是软件包的库位置其中依赖性被评估。
如果你调试install.packages()它基本上是做getDependencies()步骤然后@ Dirk的download.packages()步骤,然后才真正开始安装任何东西。