2010-06-07 42 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

相關問題