将包安装到库中而忽略其他库

Installing packages into a library ignoring other libraries

我目前在我的机器上安装了 testthat。我想将包及其所有依赖项(递归地)安装到一个单独的库中。问题是,当我尝试使用 install.packages("testthat", lib = "newdir") 执行此操作时,它的依赖项(例如 xml2 没有随它一起安装。如何将包及其所有依赖项安装到新库中?

我会做以下事情:

  • 使用 littler 中的 install2.r 及其 -l 参数作为目标库(我一直在做这样的事情来进行反向依赖检查

  • 也许可以正确使用 set/reset .libPaths() 以便您当前正在执行的安装不会 "see" 现有安装;最坏的情况是你在那里复制了 install2.r 和 set/reset .libPaths();您可能需要尝试使用 Rscriptr 来启动它,因为 r 在编译期间获得一些值 "baked in"

总的来说,这基本上就是我们在盒子上保留一个单独的 R-devel 时所做的事情。

编辑: 你当然可以用 install2.r 编写脚本——它只是 install.packages() 的包装器。不过恰好是设置了相关参数。