你如何使用同一个R包的多个版本?
问题描述:
为了能够比较两个版本的软件包,我需要能够选择我加载的软件包的版本。 R的软件包系统默认设置为覆盖现有软件包,因此您始终拥有最新版本。我如何覆盖这种行为?你如何使用同一个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()
,当然。所有这些命令都有很多参数,所以你的目标可能已经存在。所以不要看着改变R_HOME
,而是看看help(install.packages)
(假设你从源代码安装)。
但是AFAIK不能在同一个名字下加载两次相同的包。
+0
如果需要安装,你可以执行'lb = .libPaths(); .libPaths(c('/ custom/path',lb))' – geotheory 2017-04-05 15:29:31
有助于'update.packages'被提及的参数'installWithVers'。你可以尝试检查它(或者稍后再检查并作为答案发布;))。 – Marek 2010-06-07 10:23:53
此线程可能会有所帮助https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek 2010-06-07 10:25:06
@Marek:根据NEWS文件,版本化安装在R2.9.0中已弃用。 http://cran.r-project.org/src/base/NEWS – 2010-06-07 13:13:11