Andrew Gelman ostatnio ubolewał nad brakiem łatwego procesu aktualizacji dla R (prawdopodobnie bardziej istotne w systemie Windows niż Linux). Czy ktoś ma dobrą sztuczkę do wykonania aktualizacji, od instalacji oprogramowania po skopiowanie wszystkich ustawień / pakietów?
Ta sugestia została zawarta w komentarzach i właśnie z niej ostatnio korzystam. Najpierw zainstaluj nową wersję, a następnie uruchom to w starej wersji:
#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")
Następnie w nowej wersji:
#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)
Odpowiedzi:
Dla pełnego obrazu istnieje kilka sposobów, aby zapobiec wystąpieniu tego problemu. Jak powiedział Dirk, zapisz swoje pakiety w innym katalogu na swoim komputerze.
Można zmienić domyślne
.Library
wartości używając funkcji.libPaths
zbytSpowoduje to umieszczenie tej ścieżki jako pierwszej wartości w
.Library
zmiennej i uczyni ją domyślną.Jeśli chcesz zautomatyzować to dalej, możesz to określić w pliku Rprofile.site, który znajdziesz w katalogu / etc / twojej kompilacji R. Następnie ładuje się automatycznie za każdym razem, gdy ładuje się R i nie musisz się już o to martwić. Możesz po prostu zainstalować i załadować pakiety z określonego katalogu.
Na koniec mam mały kod zawarty w moim Rprofile.site, który pozwala mi ponownie zainstalować wszystkie pakiety, kiedy instaluję nową wersję R. Wystarczy je wymienić, zanim zaktualizujesz do nowej wersji R. Robię to używając pliku .RData zawierającego zaktualizowaną listę wszystkich pakietów.
Tworzę packagelist.RData, podając
.Last()
w moim Rprofile.site. To aktualizuje listę pakietów, jeśli zainstalowałem kilka:Kiedy instaluję nową wersję R, po prostu dodaję niezbędne elementy do pliku Rprofile.site i ponownie instaluję wszystkie pakiety. I tak muszę dostosować Rprofile.site (używając kontrastów sum, dodając dodatkowy kod dla Tinn-R, te rzeczy), więc tak naprawdę nie jest to dodatkowa praca. Instalacja wszystkich pakietów od nowa zajmuje po prostu więcej czasu.
Ten ostatni fragment jest równoważny temu, co podano w pierwotnym pytaniu jako rozwiązanie. Po prostu nie muszę się martwić o to, że najpierw otrzymam listę „zainstalowanych”.
Ponownie, nie działa to bezbłędnie, jeśli masz pakiety, które nie są instalowane z CRAN. Ale ten kod można łatwo rozszerzyć, aby uwzględnić również te.
źródło
.Library
. W moim przypadku wskazuje z powrotem na folder instalacyjny R, jeśli nie został zmieniony (czego szczególnie nie lubię, ale dobrze)Jest to oczywiście stare pytanie, ale może istnieć nowa, łatwa odpowiedź (działająca tylko dla systemu Windows), którą właśnie znalazłem.
Najlepszym sposobem na to jest skorzystanie z systemu RGui. Wszystkie twoje pakiety zostaną przeniesione do nowego folderu, a stare zostaną usunięte lub zapisane (możesz wybrać jeden z nich). Po ponownym otwarciu RStudio natychmiast rozpoznaje, że używasz zaktualizowanej wersji. Dla mnie to zadziałało jak urok,
Więcej informacji o {installr} tutaj .
Szymon
źródło
Dwie szybkie sugestie:
Użyj plików wsadowych Gabora, o których mówi się, że zawierają narzędzia pomagające np. W przenoszeniu bibliotek zbiorczych. Uwaga: nie korzystałem z nich.
Nie instaluj bibliotek w „drzewie plików” zainstalowanej wersji R. W systemie Windows mogę umieścić R w wersji C: / opt / R / R- $, ale umieszczam wszystkie biblioteki w C: / opt / R / library / za pomocą następującego fragmentu kodu, ponieważ łagodzi to problem w pierwszej kolejności:
źródło
Sugerowana powyżej metoda nie zadziała całkowicie, jeśli masz pakiety, które nie pochodzą z CRAN. Na przykład pakiet osobisty lub pakiet pobrany z witryny innej niż CRAN.
Moja preferowana metoda w systemie Windows (aktualizacja 2.10.1 do 2.11.0):
R-2.10.0/library/*
doR-2.11.0/library/
update.packages()
źródło
W odniesieniu do rozwiązania podanego w pytaniu, uruchomienie starszej wersji R może nie być łatwe, jeśli masz już zainstalowaną nową wersję. W takim przypadku nadal możesz ponownie zainstalować wszystkie brakujące pakiety z poprzedniej wersji R. w następujący sposób.
(Zwróć uwagę, że argument do
list.files()
w pierwszym wierszu kodu powinien być ścieżką do katalogu biblioteki dla poprzedniej wersji R, w którym znajdują się wszystkie foldery pakietów z poprzedniej wersji. W moim obecnym przypadku tak jest"/Library/Frameworks/R.framework/Versions/3.2/Resources/library"
. Będzie inaczej, jeśli Twoja poprzednia wersja R jest inna niż 3.2 lub jeśli używasz systemu Windows.)if
Oświadczenie zapewnia, że pakiet jest nie zainstalowany, jeślifor
pętli.źródło
Zgodnie z sugestią Dirka, oto kod R, aby zrobić to w systemie Windows: Jak łatwo zaktualizować R w systemie Windows XP
Aktualizacja (15.04.11): Napisałem kolejny post na ten temat, wyjaśniając, jak radzić sobie z typowymi problemami z aktualizacją R w systemie Windows 7
źródło
installr
który automatyzuje ten proces (obecnie tylko w systemie Windows) r-statistics.com/tag/installr lub github.com/talgalili/installrinstall.packages(installr); library(installr); updateR(TRUE)
. Na końcu[1] TRUE
pojawia się. Dzięki doskonałemu pakietowi Galili bardzo łatwo przeszedłem z R 3.6.0 do R 3.6.1. Dzięki Tal.Dwie opcje:
.libPaths("C:/R/library")
źródło
Korzystam z systemu Windows 8 iz jakiegoś dziwnego powodu nigdy nie mogę instalować pakietów przy użyciu połączeń internetowych.
Generalnie instaluję go przy użyciu pliku .zip z CRAN.
Po przejściu z R 3.2.5 do R 3.3.1.
Po prostu skopiowałem pakiety z
C:\Path\to\packa\R\win-library\3.2
doC:\Path\to\packa\R\win-library\3.3
.A potem ponownie uruchomiłem sesję R. Działał doskonale. Nie sprawdziłem, czy WSZYSTKIE pakiety działają dobrze. Ale te, które sprawdziłem, działają doskonale. Mam nadzieję, że ten hack zadziała dla każdego.
Twoje zdrowie.
źródło
Zaakceptowana odpowiedź może zadziałać, jeśli masz przewidywanie, ale pozbyłem się już starej wersji, więc nie byłem w stanie zastosować się do tych wskazówek. Kroki opisane poniżej działały przy aktualizacji OSX z wersji 2.1 i 3.1.
AKTUALIZACJA: Aby uzyskać katalog dla najnowszej wersji (zamiast wpisywać 3.1 lub 3.2), możesz użyć poniższych poleceń. Drugi konwertuje bezpośrednio na zmienną R, pomijając
.
i,..
i.DS_Store
użyj:(Dodaj
|pbcopy
na końcu, aby skopiować go bezpośrednio do schowka Maca)Następnie w R możesz wkleić wygenerowaną zmienną. Po zdefiniowaniu tego w nowej wersji języka R możesz przeglądać zainstalowane pakiety, korzystając z powyższych instrukcji ...
źródło
dla mnie ta strona jest dobra https://www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/ lub inna opcja to po prostu zainstaluj nową opcja i na koniec wstawiasz np. w windows na moim komputerze
.libPaths (c ("D: /Documents/R/win-library/3.2", "C: / Program Files / R / R-3.2.3 / library", "C: / Program Files / R / R-3.2 .0 / library "," D: /Documents/R/win-library/2.15 ")
każda ścieżka ostatniej wersji w moim przypadku zawsze umieszczam pierwszą ścieżkę "D: /Documents/R/win-library/3.2", która jest naprawiona, a następnie umieszczam drugą, ponieważ nie potrzebujesz kopiować ani przenosić żadnych pakietów, w sugeruję, żeby to nazwać
źródło
linux
+bash
+debian
+apt
użytkowników:Jeśli instalujesz / aktualizujesz do najnowszej wersji
R
, możemy założyć, że maszroot
uprawnienia. (Nie jest to konieczne, po prostu znacznie upraszcza proces; dla spójności poniższy skrypt używasudo
dla wszystkich instalacji). PonieważR
pakiety są również instalowane przezroot
, dozwolone jest umieszczanie ich w plikach/usr/local/
.Poniższe wezwanie
curl
zakłada, że jesteś już zainteresowanysid
wydaniemR
najnowszej niestabilnej wersji (zgodnie z wymaganiami podczas budowania / sprawdzaniaR
pakietu), tj.cat /etc/apt/sources.list | grep 'sid' || exit 1
chociaż można to łatwo zastąpić niedawną stabilną wersją, np
buster
.Zauważ, że nie używam klucza, jak jest to zwykle zalecane . Nie jest to konieczne, szczególnie jeśli (jak w poniższym skrypcie) instalujemy pakiety w
R
sobie (Rscript -e
poniżej). Ponadto takie klucze mają tendencję do łamania / zmiany co kilka lat. W związku z tym możesz oczywiście dodać następujący przedmowę do pliku,R.sh
który:sudo apt-key adv --keyserver keyserver.ubuntu.com \ --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
array
ZR
pakietów wyraźnie nie jest wyczerpująca, ale daje kilka przykładów, które ja osobiście uważam użyteczne. Świeża instalacja / aktualizacja zdebian
pakietemr-recommended
, jak poniżej, powinna dać najnowszą wersję wszystkich standardowych „zalecanych” pakietów (np.survival
.). Uważam, że może wystąpić niewielkie opóźnienie między wydaniem CRAN a aktualizacją odpowiedniegodebian
pakietu. Dlatego możesz chcieć dodać niektóre z nich doarray
poniższych, jeśli posiadanie najnowszej wersji „zalecanego”R
pakietu jest niezbędne.Te
debian
pakiety zainstalowane w poniższej procesu są również ani istotne (za korzystanier-base
), ani wyczerpujące, ale zapewniają nie. „dodatków”, które są ważne dla rozsądnego „nie”. zR
pakietów.W każdym razie ... umieść w
R.sh
:Następnie uruchom go, np zakładając już w katalogu:
source R.sh
.Instalowanie pakietów (czy to czy
debian
teżR
) pojedynczo w pętli z powłoki jest nieco nieefektywne, ale pozwala na prostsze śledzenie błędów, IMHO. Może to zająć trochę czasu, w zależności od numeru. odR
pakietów, więc może najprostsze do wynajęcia prowadzony przez noc ...źródło
r-recommended
. „r-base-devel” jest znany jakor-base-dev
(debian
pakiet) - został już uwzględniony. Nie mam nic przeciwko używaniu klucza bezpieczeństwa (zaktualizowana odpowiedź). Odpowiedzią nie jest używanie aPPA
= osobistych archiwów paczek, ponieważ są one z konieczności zależne od jednej osoby, a zatem potencjalnie omylne. Jak mówi sam Michael Rutter (2012): „Jeśli korzystałeś z CRAN, nie ma powodu, aby przechodzić na PPA, ponieważ te same pakiety są dostarczane w obu lokalizacjach”.