2010-06-07 6 views
37

Afin de pouvoir comparer deux versions d'un paquet, je dois pouvoir choisir quelle version du paquet que je charge. Le système de paquets de R est configuré par défaut pour écraser les paquets existants, de sorte que vous avez toujours la dernière version. Comment puis-je remplacer ce comportement?Comment utilisez-vous plusieurs versions du même paquet R?

Mes pensées à ce jour sont:

je pourrais obtenir les sources de package, modifiez les descriptions de donner des noms différents et de construire, en effet, deux paquets différents. Je préférerais pouvoir travailler directement avec les binaires, car c'est beaucoup moins compliqué.

Je n'ai pas nécessairement besoin d'avoir les deux versions des paquets chargés en même temps (juste installé quelque part en même temps). Je pourrais peut-être embêter avec Sys.getenv('R_HOME') pour changer l'endroit où R installe les paquets, puis .libpaths() pour changer l'endroit où R les cherche. Cela semble hacky cependant, donc quelqu'un a-t-il de meilleures idées?

+2

A l'aide de 'update.packages' est mentionné l'argument' installWithVers'. Vous pourriez essayer de le vérifier (ou je vérifierai plus tard et posterai comme réponse;)). – Marek

+0

Et ce fil pourrait être utile https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek

+2

@Marek: Selon le fichier NEWS, les installations versionnées ont été abandonnées dans R2.9.0. http://cran.r-project.org/src/base/NEWS –

Répondre

33

Vous pouvez modifier le chemin de la bibliothèque de manière sélective. Pour toute transparence, garder les deux hors de votre chemin habituel, puis faire

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

et

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

Les mêmes œuvres pour install.packages(), bien sûr. Toutes ces commandes ont un certain nombre d'arguments, donc les hameçons que vous visez peuvent déjà être présents. Donc, ne regardez pas changer R_HOME, plutôt regarder help(install.packages) (en supposant que vous installez à partir de la source). Mais AFAIK vous ne pouvez pas charger le même paquet deux fois sous le même nom.

+0

Et pour l'installation, vous pouvez si nécessaire faire lb = .libPaths(); .libPaths (c ('/ custom/path', lb)) ' – geotheory

Questions connexes