2010-06-07 16 views
37

Para poder comparar dos versiones de un paquete, necesito poder elegir qué versión del paquete que cargué. El sistema de paquetes de R está configurado de manera predeterminada para sobrescribir los paquetes existentes, para que siempre tenga la última versión. ¿Cómo anulo este comportamiento?¿Cómo se usan varias versiones del mismo paquete R?

Mis pensamientos hasta el momento son:

que podría conseguir las fuentes de paquetes, editar las descripciones para dar diferentes nombres y construir, en efecto, dos paquetes diferentes. Preferiría poder trabajar directamente con los binarios, ya que es mucho menos complicado.

que no necesariamente tienen que tener las dos versiones de los paquetes cargados al mismo tiempo (acaba de instalar algún lugar al mismo tiempo). Pude quizá enredar con Sys.getenv('R_HOME') para cambiar el lugar donde R instala los paquetes, y luego .libpaths() para cambiar el lugar en el que R se ve por ellos. Esto parece raro, ¿alguien tiene alguna idea mejor?

+2

En ayuda a 'update.packages' se menciona argumento' installWithVers'. Podrías tratar de verificarlo (o lo verificaré más tarde y lo publicaré como respuesta;)). – Marek

+0

Y este hilo podría ser útil https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek

+2

@Marek: De acuerdo con el archivo de noticias, las instalaciones fueron versionados en desuso en R2.9.0. http://cran.r-project.org/src/base/NEWS –

Respuesta

33

Se podía alterar selectivamente la ruta de la biblioteca. Para una completa transparencia, mantener tanto fuera de su ruta habitual y luego hacer

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

y

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

Las mismas obras de install.packages(), por supuesto. Todos estos comandos tienen una cantidad de argumentos, por lo que los ganchos que pretendes pueden estar presentes. Por lo tanto, no intente cambiar R_HOME, sino más bien consulte help(install.packages) (suponiendo que lo instale desde la fuente).

Pero yo sepa no se puede cargar el mismo paquete dos veces bajo el mismo nombre.

+0

Y para instalar puede, si es necesario, hacer 'lb = .libPaths(); .libPaths (c ('/ custom/path', lb)) ' – geotheory

Cuestiones relacionadas