Schmerzlose Möglichkeit, eine neue Version von R zu installieren?

Andrew Gelman beklagte kürzlich das Fehlen eines einfachen Upgrade-processes für R (wahrscheinlich wichtiger unter Windows als Linux). Hat jemand einen guten Trick für das Upgrade, von der Installation der Software bis zum Kopieren aller Einstellungen / Pakete?

Dieser Vorschlag wurde in den Kommentaren enthalten und ist das, was ich in letzter Zeit benutzt habe. Zuerst installieren Sie die neue Version, dann führen Sie diese in der alten Version aus:

#--run in the old version of R setwd("C:/Temp/") packages <- installed.packages()[,"Package"] save(packages, file="Rpackages") 

Gefolgt von diesem in der neuen Version:

 #--run in the new version setwd("C:/Temp/") load("Rpackages") for (p in setdiff(packages, installed.packages()[,"Package"])) install.packages(p) 

Solutions Collecting From Web of "Schmerzlose Möglichkeit, eine neue Version von R zu installieren?"

Nur der Vollständigkeit halber gibt es einige Möglichkeiten, um zu verhindern, dass Sie dieses Problem haben. Wie Dirk sagte, speichern Sie Ihre Pakete in einem anderen Verzeichnis auf Ihrem Computer.

 install.packages("thepackage",lib="/path/to/directory/with/libraries") 

Sie können den Standardwert .Library mit der function .libPaths

 .libPaths("/path/to/directory/with/libraries") 

Dadurch wird dieser Pfad als erster Wert in die Variable .Library und zum Standard gemacht.

Wenn Sie dies weiter automatisieren möchten, können Sie dies in der Datei Rprofile.site angeben, die Sie im Verzeichnis / etc / Ihres R-Builds finden. Dann wird es automatisch jedes Mal geladen, wenn R geladen wird, und Sie müssen sich darüber keine Gedanken mehr machen. Sie können nur Pakete aus dem angegebenen Verzeichnis installieren und laden.

Schließlich habe ich einen kleinen Code in meiner Rprofile.site, mit dem ich alle Pakete neu installieren kann, wenn ich eine neue R-Version installiere. Sie müssen sie nur auflisten, bevor Sie auf die neue R-Version aktualisieren. Ich mache das mit einer .RData-Datei, die eine aktualisierte Liste mit allen Paketen enthält.

 library(utils) ## Check necessary packages load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs" installed < - pkgs %in% installed.packages()[, 'Package'] if (length(pkgs[!installed]) >=1){ install.packages(pkgs[!installed]) } 

Ich mache die Paketliste.RData, indem .Last() in meiner Rprofile.site spezifiziere. Dies aktualisiert die Paketliste, wenn ich einige installiert habe:

 .Last < - function(){ pkgs <- installed.packages()[,1] if (length(pkgs) > length(installed)){ save(pkgs,file="G:\Setinfo\R\packagelist.RData") } } 

Wenn ich eine neue R-Version installiere, füge ich einfach die notwendigen Elemente zur Rprofile.site-Datei hinzu und alle Pakete werden neu installiert. Ich muss sowieso die Rprofile-Seite anpassen (indem ich Summenkontraste verwende, den zusätzlichen Code für Tinn-R hinzufüge, diese Dinge), also ist es nicht wirklich extra Arbeit. Es braucht nur zusätzliche Zeit, um alle Pakete neu zu installieren.

Dieses letzte Bit entspricht dem, was in der ursprünglichen Frage als Lösung angegeben ist. Ich muss mir einfach keine Sorgen darum machen, die “installierte” Liste zuerst zu bekommen.

Auch dies funktioniert nicht einwandfrei, wenn Sie Pakete haben, die nicht von CRAN installiert sind. Aber dieser Code ist leicht erweiterbar, um auch diese einzuschließen.

Bearbeiten: Es gab eine fehlende Klammer im Code

Das ist natürlich eine alte Frage, aber es könnte eine neue einfache Antwort geben (die nur für Windows funktioniert), die ich gerade gefunden habe.

 install.packages("installr") require(installr) updateR() 

Der beste Weg dazu ist das RGui-System. Alle Ihre Pakete werden in den neuen Ordner übertragen und die alten werden gelöscht oder gespeichert (Sie können beides auswählen). Sobald Sie RStudio erneut öffnen, erkennt es sofort, dass Sie eine aktualisierte Version verwenden. Für mich funktionierte das wie ein Zauber,

Weitere Informationen zu {install} finden Sie hier .

Simon

Zwei schnelle Vorschläge:

  1. Verwenden Sie die Batch – Dateien von Gabor, von denen gesagt wird, dass sie Werkzeuge enthalten, die zB bei der Verlagerung von Bibliotheksbeständen helfen. Vorbehalt: Ich habe sie nicht benutzt.

  2. Installieren Sie keine Bibliotheken innerhalb des ‘Dateibaums’ der installierten R-Version. Unter Windows kann ich R in C: / opt / R / R- $ Version setzen, aber alle Bibliotheken in C: / opt / R / library / unter Verwendung des folgenden Snippets platzieren, da es das Problem von vornherein lindert:

 $ cat .Renviron # this is using MSys/MinGW which looks like Cygwin ## Example .Renviron on Windows R_LIBS="C:/opt/R/library" 

Die oben vorgeschlagene Methode funktioniert nicht vollständig, wenn Sie Pakete haben, die nicht von CRAN stammen. Zum Beispiel ein persönliches Paket oder ein Paket, das von einer Nicht-CRAN-Site heruntergeladen wurde.

Meine bevorzugte Methode unter Windows (Upgrade von 2.10.1 auf 2.11.0):

  1. Installieren Sie R-2.11.0
  2. R-2.10.0/library/* nach R-2.11.0/library/
  3. Beantworten Sie die Ansagen mit “Nein”, wenn Sie gefragt werden, ob das Überschreiben in Ordnung ist.
  4. Starte R 2.11.0
  5. Führen Sie den R-Befehl update.packages()

In Bezug auf die in der Frage angegebene Lösung ist es möglicherweise nicht einfach, Ihre ältere Version von R auszuführen, wenn Sie die neue Version bereits installiert haben. In diesem Fall können Sie alle fehlenden Pakete aus der vorherigen R-Version wie folgt erneut installieren.

 # Get names of packages in previous R version old.packages < - list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library") # Install packages in the previous version. # For each package p in previous version... for (p in old.packages) { # ... Only if p is not already installed if (!(p %in% installed.packages()[,"Package"])) { # Install p install.packages(p) } } 

(Beachten Sie, dass das Argument für list.files() in der ersten Codezeile der Pfad zum Bibliotheksverzeichnis für Ihre vorherige R-Version sein sollte, in der sich alle Ordner von Paketen in der vorherigen Version befinden. In meinem aktuellen Fall ist dies "/Library/Frameworks/R.framework/Versions/3.2/Resources/library" . Dies wird anders sein, wenn Ihre vorherige R-Version nicht 3.2 ist oder wenn Sie unter Windows arbeiten.)

Die if statement stellt sicher, dass ein Paket nicht installiert ist, wenn

  • Es ist bereits in der neuen R-Version installiert, oder
  • Wurde als Abhängigkeit von einem Paket installiert, das in einer früheren Iteration der for Schleife installiert wurde.

Nach dem Vorschlag von Dirk, hier ist ein R-Code, um es unter Windows zu tun: Wie man leicht R unter Windows XP upgraden kann

Update (15.04.11): Ich habe einen weiteren Beitrag zu diesem Thema geschrieben, der erklärt, wie man mit den häufigen Problemen beim Upgrade von R auf Windows 7 umgehen kann

Zwei Optionen:

  1. Implementiere meine Antwort hier
  2. Wenn Sie R unter Eclipse mit StatET verwenden, öffnen Sie Run Configurations , klicken Sie auf die Registerkarte Console und im Feld R Snippet run nach dem Start fügen Sie diese Zeile mit dem Verzeichnis Ihrer Wahl hinzu: .libPaths("C:/R/library")

Ich bin auf Windows 8 und kann aus irgendeinem seltsamen Grund niemals Pakete mit meinen Internetverbindungen installieren.

Ich installiere es normalerweise mit der ZIP-Datei von CRAN.

Nachdem ich von R 3.2.5 nach R 3.3.1 gegangen bin.

Ich habe die Pakete einfach kopiert

C:\Path\to\packa\R\win-library\3.2 zu C:\Path\to\packa\R\win-library\3.3 .

Und dann habe ich die R-Sitzung neu gestartet. Arbeitete perfekt. Ich habe nicht überprüft, ob ALLE Pakete gut funktionieren. Aber diejenigen, die ich überprüft habe, funktionieren perfekt. Ich hoffe, dieser Hack funktioniert für alle.

Prost.

Die angenommene Antwort könnte funktionieren, wenn Sie vorausschauend sind, aber ich hatte die alte Version bereits losgeworden und konnte daher diesen statementen nicht folgen. Die unten beschriebenen Schritte funktionierten für das OSX-Upgrade von 2.1 und 3.1.

AKTUALISIERT: Um das Verzeichnis für Ihre letzte Version zu erhalten (anstatt in 3.1 oder 3.2 zu tippen), können Sie die folgenden Befehle verwenden. Die zweite konvertiert direkt in die R-Variable und überspringt . und .. und .DS_Store , verwenden Sie:

 OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/ echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/" 

Dann können Sie innerhalb von R die Variable einfügen, die generiert wurde (fügen Sie |pbcopy am Ende hinzu, um es direkt zu kopieren. Sobald dies in der neuen Version von R definiert ist, können Sie die installierten Pakete aus den obigen statementen durchlaufen …

 for (p in setdiff(packages, installed.packages()[,"Package"])) install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE) 

für mich ist diese Seite gut https://www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/ oder eine andere Option ist nur die neue installieren Option und zum Schluss setzen Sie, zum Beispiel in Windows in meinem PC

.libPaths (c: “D: /Documents/R/win-library/3.2”, “C: / Programme / R / R-3.2.3 / library”, “C: / Programme / R / R-3.2 .0 / library “,” D: /Documents/R/win-library/2.15 “)

Jeder Pfad der letzten Version in meinem Fall habe ich immer den ersten Pfad ist “D: /Documents/R/win-library/3.2”, das ist fest und dann setze ich das andere, weil Sie keine Pakete kopieren oder verschieben müssen, in mein Sugest rufen Sie es einfach an