2010-06-07 10 views
37

Aby móc porównać dwie wersje pakietu, muszę wybrać wersję pakietu, który ładuję. System paczek R jest ustawiony domyślnie, aby nadpisywać istniejące pakiety, dzięki czemu zawsze będziesz mieć najnowszą wersję. Jak mogę zmienić to zachowanie?Jak korzystać z wielu wersji tego samego pakietu R?

Moje myśli są tak daleko:

mogę dostać źródła pakietów, edytować opisy dać różne nazwy i budować w rzeczywistości dwa różne pakiety. Wolałbym jednak pracować bezpośrednio z plikami binarnymi, ponieważ jest to znacznie mniej kłopotliwe.

Nie muszę koniecznie mieć załadowanych jednocześnie obu wersji pakietów (instalowanych tylko w tym samym czasie). Mógłbym może zadzierać z Sys.getenv('R_HOME'), aby zmienić miejsce, w którym R instaluje pakiety, a następnie .libpaths(), aby zmienić miejsce, w którym R je szuka. Wygląda to jednak na hakera, więc czy ktoś ma lepsze pomysły?

+2

W pomocy do 'update.packages' jest wymieniony argument' installWithVers'. Możesz spróbować to sprawdzić (lub sprawdzę później i opublikuję jako odpowiedź;)). – Marek

+0

Ten wątek może być pomocny https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek

+2

@Marek: Zgodnie z plikiem NEWS, wersjonowane instalacje zostały wycofane w wersji R2.9.0. http://cran.r-project.org/src/base/NEWS –

Odpowiedz

33

Można selektywnie zmienić ścieżkę biblioteki. Dla pełnej przejrzystości, zachować zarówno na zwykłej drodze i wtedy zrobić

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

i

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

Te same prace dla install.packages(), oczywiście. Wszystkie te polecenia mają wiele argumentów, więc haki, do których dążysz, mogą już być obecne. Więc nie patrz na zmianę R_HOME, raczej spójrz na help(install.packages) (zakładając, że instalujesz ze źródła).

Ale AFAIK nie można załadować tego samego pakietu dwukrotnie pod tą samą nazwą.

+0

I do instalacji możesz w razie potrzeby zrobić 'lb = .libPaths(); .libPaths (c ('/ custom/path', lb)) ' – geotheory