2010-06-07 47 views
37

为了能够比较两个版本的软件包,我需要能够选择我加载的软件包的版本。 R的软件包系统默认设置为覆盖现有软件包,因此您始终拥有最新版本。我如何覆盖这种行为?你如何使用同一个R包的多个版本?

我的想法至今都:

我能得到的源码包,编辑的描述给予不同的名字而建,实际上,两种不同的封装。尽管如此,我宁愿能够直接与二进制文件一起工作,因为它不那么麻烦。

我不一定需要同时加载两个版本的软件包(只需同时安装)。我也许可以用Sys.getenv('R_HOME')来改变R安装软件包的地方,然后.libpaths()来改变R查找它们的地方。尽管这看起来很诡异,但是任何人都有更好的想法吗?

+2

有助于'update.packages'被提及的参数'installWithVers'。你可以尝试检查它(或者稍后再检查并作为答案发布;))。 – Marek 2010-06-07 10:23:53

+0

此线程可能会有所帮助https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek 2010-06-07 10:25:06

+2

@Marek:根据NEWS文件,版本化安装在R2.9.0中已弃用。 http://cran.r-project.org/src/base/NEWS – 2010-06-07 13:13:11

回答

33

您可以选择性地更改库路径。对于完全透明,既保持了你平时的路径,然后做

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

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

同样的作品install.packages(),当然。所有这些命令都有很多参数,所以你的目标可能已经存在。所以不要看着改变R_HOME,而是看看help(install.packages)(假设你从源代码安装)。

但是AFAIK不能在同一个名字下加载两次相同的包。

+0

如果需要安装,你可以执行'lb = .libPaths(); .libPaths(c('/ custom/path',lb))' – geotheory 2017-04-05 15:29:31

相关问题