2010-06-07 13 views
37

Per poter confrontare due versioni di un pacchetto, ho bisogno di scegliere quale versione del pacchetto che carico. Il sistema di pacchetti di R è impostato per default per sovrascrivere i pacchetti esistenti, in modo da avere sempre la versione più recente. Come sovrascrivo questo comportamento?Come si usano più versioni dello stesso pacchetto R?

I miei pensieri finora sono:

ho potuto ottenere i sorgenti dei pacchetti, modificare le descrizioni di dare nomi diversi e costruire, in effetti, due pacchetti diversi. Preferirei essere in grado di lavorare direttamente con i binari, dato che è molto meno fastidioso.

Non ho necessariamente bisogno di avere entrambe le versioni dei pacchetti caricate contemporaneamente (appena installate da qualche parte nello stesso momento). Potrei forse scherzare con Sys.getenv('R_HOME') per cambiare il luogo in cui R installa i pacchetti, e quindi .libpaths() per cambiare il punto in cui R li cerca. Questo però sembra un po 'hacky, quindi qualcuno ha qualche idea migliore?

+2

In help per 'update.packages' viene menzionato l'argomento' installWithVers'. Potresti provare a controllarlo (o controllerò più tardi e postare come risposta;)). – Marek

+0

E questa discussione potrebbe essere utile https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek

+2

@Marek: Secondo il file NEWS, le installazioni con versione erano deprecate in R2.9.0. http://cran.r-project.org/src/base/NEWS –

risposta

33

È possibile modificare selettivamente il percorso della libreria. Per una completa trasparenza, mantenere sia dal vostro solito percorso e quindi fare

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

e

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

Le stesse opere per install.packages(), naturalmente. Tutti questi comandi hanno un numero di argomenti, quindi gli hook a cui miri potrebbero già essere presenti. Quindi non guardare a cambiare R_HOME, piuttosto guardare help(install.packages) (supponendo che si installa dal sorgente).

Ma AFAIK non è possibile caricare lo stesso pacchetto due volte con lo stesso nome.

+0

E per l'installazione puoi, se necessario, fare 'lb = .libPaths(); .libPaths (c ('/ custom/path', lb)) ' – geotheory

Problemi correlati