为了能够比较软件包的两个版本,我需要能够选择要加载的软件包的哪个版本。 R的软件包系统默认设置为覆盖现有软件包,因此您始终具有最新版本。我如何忽略此行为?

到目前为止,我的想法是:

我可以得到软件包的来源,编辑描述以给出不同的名称,并实际上构建两个不同的软件包。不过,我宁愿能够直接使用二进制文件,因为这样麻烦得多。

我不一定需要同时加载两个版本的软件包(只需同时安装在某个位置)。我可能会用Sys.getenv('R_HOME')来更改R安装软件包的位置,然后使用.libpaths()来更改R查找软件包的位置。但是,这似乎很棘手,所以有人有更好的主意吗?

最佳答案

您可以有选择地更改库路径。为了获得完全透明,请避免两者都照常行事,然后再做

 library(foo, lib.loc="~/dev/foo/v1")    ## loads v1


 library(foo, lib.loc="~/dev/foo/v2")    ## loads v2

当然,对于install.packages()也是如此。所有这些命令都有许多自变量,因此您想要的钩子(Hook)可能已经存在。因此,不要看更改R_HOME,而要看help(install.packages)(假设您从源代码安装)。

但是AFAIK不能以相同的名称两次加载相同的程序包。

09-04 20:28