为了能够比较软件包的两个版本,我需要能够选择要加载的软件包的哪个版本。 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不能以相同的名称两次加载相同的程序包。