Instalowanie starszej wersji pakietu R.


142

Próbuję użyć Rpy2 i ggplot2, ale pojawia się błąd. Po pewnym szukaniu błędu w Internecie stwierdziłem, że błąd występuje, ponieważ w pakiecie ggplot2 są zmiany, które nie zostały jeszcze odzwierciedlone w Rpy2 (na przykład zobacz ten post (Edycja: Link nie działa)).

Więc teraz muszę zainstalować starszą wersję ggplot2. Oto pseudokod tego, czego chcę:

install.packages("ggplot2", version='0.9.1')

Ale install.packagesnie ma versionargumentu . Jak mam to zrobić?


Odpowiedzi:


158

Aby zainstalować starszą wersję pakietu ze źródła (w R):

packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

Jeśli to nie zadziała i korzystasz z systemu Windows, prawdopodobnie przyczyną jest brak odpowiedniego łańcucha narzędzi do budowania / kompilowania pakietów . Zwykle instalowałbyś prekompilowany plik binarny z CRAN, ale archiwizuje on tylko źródła pakietów , a nie pliki binarne. [1] Oznacza to, że musisz zainstalować Rtools , aby móc skompilować wszystko lokalnie. (Uwaga: Rtools nie jest pakietem R. )

Odpowiedź @ shadow poniżej również sprawia, że ​​możesz użyć devtools::install_version(). To także dobry pomysł, ale wymaga również narzędzi Rtools w systemie Windows.

Od 18 września 2015 r . W CRAN pojawiły się nowe wersje pakietów . Zależy to od serwera Revolution Analytics MRAN do instalowania pakietów dla określonych wersji lub dat:

# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)

# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))

Ma to tę zaletę, że nie wymaga Rtools do instalowania pakietów binarnych w systemie Windows, ale działa tylko od 2014-09-17 (kiedy uruchomiono MRAN).

Aby zainstalować starszą wersję z wiersza poleceń (poza R):

Możesz również zainstalować pakiet za pomocą R CMD INSTALLwiersza poleceń (terminal, wiersz polecenia itp.), Gdy masz już źródło pakietu („tarball”) lokalnie na swoim komputerze, na przykład używając wget(jeśli je masz):

wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz

lub, jeśli korzystasz z systemu Windows, odpowiednikiem używającym PowerShell byłoby:

(new-object System.Net.WebClient).DownloadFile("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz", "./ggplot2_0.9.1.tar.gz")

lub możesz po prostu pobrać źródło z archiwum CRAN za pośrednictwem przeglądarki internetowej.

Aby zainstalować z pliku lokalnego, możesz po prostu wykonać:

R CMD INSTALL ggplot2_0.9.1.tar.gz

To powinno działać na każdej platformie (z tym samym zastrzeżeniem - co powyżej - co do potrzeby łańcucha narzędzi do budowania pakietów).


[1] Nie jest to już do końca prawdą. Od marca 2016 r. CRAN rozpoczął hosting serwera „CRAN Archive”, który zawiera pliki binarne systemów Windows i Mac dla bardzo starych wersji R (> 5 lat). Możesz teraz zainstalować bezpośrednio z tego serwera za pomocą install.packages(). Więcej szczegółów można znaleźć w nowym R FAQ 7.44 .


4
Dziękuję, myślę, że to właściwy sposób. Szkoda, że ​​teraz dostaję: Warning message: package ‘http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz’ is not available (for R version 2.15.2)
hirolau

3
Miałem podobny problem z Rcpp. Może to być spowodowane zależnością wersji R pakietu (DEPENDS: <wersja>) lub może być spowodowane tym, że działająca sesja języka R nie pozwoli na wykonanie aktualizacji. Udało mi się przeprowadzić aktualizację w sposób, który zasugerował Mark Butler (poniżej) (R CMD INSTALL your_version.tar.gz). To było dla R 2.15.3 w moim przypadku.
Robert Casey,

@Antoine Czy używasz systemu Windows? A jeśli tak, czy masz zainstalowane narzędzia Rtools?
Thomas,

@Thomas Dzięki za odpowiedź. Tak, pracuję na Windowsie z pseudoinstalacją Rtools. Zobacz ten wątek .
Antoine,

@ Thomas Spróbuję uruchomić mój skrypt na Amazon EC2, aby uniknąć oczywistych problemów lokalnych na moim komputerze (ścieżki do biblioteki, wersje R vs wersje pakietów, problemy z kompilacją itp.)
Antoine

95

remotesPakiet oferuje install_versionfunkcję, która może to zrobić bezpośrednio.

require(remotes)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")

Wcześniej ta odpowiedź wskazywała na devtoolspakiet, który również ponownie eksportuje install_versionfunkcję. Dzięki @MichaelChirico za wskazanie, że remotespakiet jest lepszy.


czy możesz zachować wiele wersji tego samego pakietu bez konieczności install_versionkażdorazowego ładowania określonej wersji? powiedz,library(ggplot2-0.9.1)
PatrickT

1
@PatrickT Możesz to zrobić, korzystając z lokalnej biblioteki. Na przykład install_version('ggplot2', version = 0.9.1, lib = 'path_to_library_with_ggplot_0.9.1')ilibrary(ggplot2, lib.loc = 'path_to_library_with_ggplot_0.9.1')
cień

1
możesz także użyć .libPaths ("/ dir_for_custom_library_versions") przed uruchomieniem install_version
tjjjohnson,

1
W dzisiejszych czasach myślę, że remotes::install_versionjest lepszy, ponieważ remotesjest znacznie lżejszy niż devtools( devtools::install_versionjest tylko reeksportem remotes::install_version)
MichaelChirico


5

Używanie w install.packagessposób opisany w innej odpowiedzi nie działa dla mnie.

Najlepszą alternatywą, jaką znalazłem, jest użycie funkcji install_urlz pakietu devtools.

Inna możliwość, której nie badałem dalej:

  1. Pobierz starszy plik źródłowy .tar.gz z archiwów pakietów.
  2. Wykonaj kroki opisane na http://rtm.wustl.edu/writings/htrtargz.pdf, aby zainstalować go lokalnie.

To nie działa dla mnie, proszę śledzić moje pytanie stackoverflow.com/q/22673474/684229, aby uzyskać szczegółowe informacje.
TMS

+1, R CMD INSTALLPolecenie działa również na Ubuntu. Dzięki!!
Phani

4

Znalazłem dobre rozwiązanie, które u mnie zadziałało (szczegóły pod linkiem ).

Polecenie w bibliotece „repmis”:

# Install old versions of the e1071 and gtools packages.

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names <- c("e1071", "gtools")
Vers <- c("1.6", "2.6.1")

# Install old package versions into the default library
InstallOldPackages(pkgs = Names, versions = Vers)

2

Czysta install.packagesmetoda

Zobacz ten wątek na liście mailingowej r-devel . W odpowiedzi Kurtowi Wheelerowi, Kurt Hornik ujawnia nieudokumentowaną funkcję strony CRAN, która określa konkretną wersję pakietu.

Ta metoda będzie działać, o ile masz już zainstalowane wszystkie wymagane zależności:

package = "https://cran.r-project.org/package=svglite&version=1.2.1"
utils::install.packages(pkgs = package, repos = NULL)

Zwróć uwagę na powyższą strukturę adresów URL. Rozwiązuje to problem polegający na tym, że CRAN ma inną strukturę adresów URL dla najnowszej wersji niż dla wersji zarchiwizowanych:

# Latest version (not available at Archive/svglite)
https://cran.r-project.org/src/contrib/svglite_1.2.1.tar.gz
# Archived version
https://cran.r-project.org/src/contrib/Archive/svglite/svglite_1.2.0.tar.gz

remotes::install_version metoda

Inną opcją jest użycie remotes::install_version funkcji . Musisz jednak zainstalować remotes pakiet .


0

Istnieje versionspakiet, który znacznie upraszcza to zadanie, dla wersji pakietów wydanych od 17.09.2014. Wykorzystuje migawki serwera MRAN w Revolution Analytics do:

  • pokaż daty wydania i dostępność MRAN dowolnego pakietu CRAN ( available.versions),

  • zainstaluj określone wersje jednego lub więcej pakietów ( install.versions) lub

  • zainstaluj wersje pakietów dostępne od dowolnej określonej daty ( install.dates). Wykonuje instalację z serwera MRAN za pomocą install.packagesfunkcji standardowej , dzięki czemu dostępne wersje binarne można zainstalować zamiast kompilacji ze źródła, a także można uwzględnić zależności pakietów z określonej daty.

Oczywiście mogą wystąpić problemy ze zgodnością w przypadku kombinacji wersji pakietów i wersji R. Aby uruchomić różne wersje języka R, zobacz na przykład tę stronę .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.