Ich verwende R unter Windows, nicht als Administrator. Wenn ich ein Paket installiere, funktioniert der folgende Befehl nicht:
> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
Um ein Paket zu installieren, muss ich einen Bibliotheksverzeichnis angeben:
install.packages("zoo", lib="C:/software/Rpackages")
Um ein Paket zu laden, muss ich auch den Speicherort der Bibliothek angeben:
library("zoo", lib.loc="C:/software/Rpackages")
All dies ist in Ordnung, aber ich wollte sehen, ob ich C:/software/Rpackages
den Bibliothekspfad irgendwie ergänzen kann und ihn daher nicht jedes Mal eingeben muss.
Als ich online suchte, stellte ich fest, dass eine Möglichkeit, dies zu tun, darin besteht, die Rprofile.site
Datei zu bearbeiten und die Zeile hinzuzufügen
.libPaths("C:/software/Rpackages")
Nachdem ich dies getan und RStudio gestartet habe, ist dies jedoch die Ausgabe, die ich erhalte
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
Der .libPaths
Befehl, den ich dem hinzugefügt habe, Rprofile.site
scheint keine Wirkung gehabt zu haben! Warum ist das so? Oder, was noch wichtiger ist, wie kann ich das Problem beheben, damit ich Pakete installieren und laden kann, ohne den Speicherort der Bibliothek eingeben zu müssen?
Hinweis: Wenn ich RStudio starte, .libPaths()
scheint der Befehl so zu funktionieren, wie er soll
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
Ist das nicht seltsam?
quelle
install.packages("zoo")
das nicht funktioniert? Fehlermeldung usw.?install.packages("zoo")
--- aber das ist nicht meine eigentliche Frage, die im Begriff ist , warum.libPaths()
inRprofile.site
nicht funktioniert.Antworten:
Ich versuche im Allgemeinen, alle meine Pakete in einer Bibliothek zu behalten. Wenn Sie jedoch eine Bibliothek hinzufügen möchten, hängen Sie die neue Bibliothek (die bereits in Ihrem Dateisystem vorhanden sein muss) an den vorhandenen Bibliothekspfad an.
Oder (und dies macht die userLibrary zum ersten Ort, an dem neue Pakete abgelegt werden):
Dann bekomme ich (zumindest damals, als ich das ursprünglich geschrieben habe):
Die
.libPaths
Funktion unterscheidet sich ein wenig von den meisten anderen nichtgrafischen Funktionen. Es funktioniert über Nebenwirkungen. Die FunktionenSys.getenv
undSys.setenv
das Melden und Ändern der R-Umgebungsvariablen wurden aufgeteilt,.libPaths
können jedoch das Ziel entweder melden oder ändern.Die Informationen zum R-Startvorgang finden Sie auf der
?Startup
Hilfeseite. RStudio-Material finden Sie unter: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudioIn Ihrem Fall scheint RStudio die Einstellungen von Rprofile.site nicht zu berücksichtigen oder sie möglicherweise zu überschreiben, indem eine .Rprofile-Einstellung aus einer der RStudio-Standardeinstellungen gelesen wird. Es sollte auch erwähnt werden, dass das Ergebnis dieser Operation auch den Inhalt von Aufrufen an
.Library
und anhängt.Library.site
, was ein weiterer Grund ist, warum ein RStudio- (oder eine andere IDE oder ein installiertes Netzwerk) gehostetes R möglicherweise ein anderes Verhalten aufweist.Da
Sys.getenv()
die aktuelle Systemumgebung für den R-Prozess zurückgegeben wird, können Sie die Bibliothek und andere Pfade mit folgenden Elementen anzeigen:Die beiden, die für das Speichern und Zugreifen auf Pakete wichtig sind, sind (jetzt auf einer Linux-Box unterschiedlich):
quelle
c()
Vektor umkehren , um sicherzustellen, dass neue Bibliotheken in den benutzerdefinierten Ordner.libPaths
-Funktion standardmäßig den gleichen Effekt. Es gibt auch einen Unterschied zwischen Betriebssystemen darin, wie nachgestellte Schrägstriche behandelt werden. (Unter Windows nicht OK). Andere Optionen sind vorhanden. Siehe?.libPaths
file.exists
und nur fortfahren, wenn der Pfad nicht fehlt.Die richtige Lösung besteht darin, die Umgebungsvariable
R_LIBS_USER
auf den Wert des Dateipfads zu Ihrem gewünschten Bibliotheksordner festzulegen, anstatt RStudio zu veranlassen, eine Rprofile.site-Datei zu erkennen.Um Umgebungsvariablen
R_LIBS_USER
in Windows festzulegen, gehen Sie in der Systemsteuerung (Systemeigenschaften -> Erweiterte Systemeigenschaften -> Umgebungsvariablen -> Benutzervariablen) auf einen gewünschten Wert (den Pfad zu Ihrem Bibliotheksordner), zDurch Festlegen von R_LIBS_USER wird sichergestellt, dass die Bibliothek zuerst in .libPaths () angezeigt wird, unabhängig davon, ob RStudio direkt oder durch Klicken mit der rechten Maustaste auf eine Datei und "Öffnen mit" zum Starten von RStudio gestartet wird.
Die Rprofile-Lösung kann funktionieren, wenn RStudio immer durch Klicken auf die Verknüpfung RStudio gestartet wird. In diesem Fall reicht es aus, das Standardarbeitsverzeichnis auf das Verzeichnis festzulegen, in dem sich Ihr Rprofile befindet. Die Rprofile-Lösung funktioniert nicht, wenn Sie auf eine Datei klicken, um RStudio zu starten, da dadurch das Arbeitsverzeichnis vom Standardarbeitsverzeichnis abweicht.
quelle
.bash_profile
und / oder.bashrc
). Siehe hier: unix.stackexchange.com/questions/117467/… Um diese für die aktuelle Sitzung festzulegen, geben Sie nur die Konsole einexport R_LIBS_USER='directory_of_your_choice'
Ich habe es geschafft, das Problem zu lösen, indem ich den Code in der
.Rprofile
Datei im Standardarbeitsverzeichnis abgelegt habe.Zuerst habe ich den Speicherort des Standardarbeitsverzeichnisses gefunden
Dann habe ich einen Texteditor verwendet, um eine einfache
.Rprofile
Datei mit der folgenden Zeile zu schreibenWenn ich schließlich starte
R
und starte,.libPaths()
erhalte ich die gewünschte Ausgabe:quelle
Sys.getenv("HOME")
in der r-Konsole ein. Ich bin nicht sicher, ob Sie die gewünschte Ausgabe erhalten. Ich denke, die gewünschte Ausgabe ist die, die 42 in seiner Antwort stackoverflow.com/a/15170774/754550 gezeigt hat . Er verwendet .libPaths auf eine etwas andere Art und Weise./superuser/749283/change-rstudio-library-path-at-home-directory
Bearbeiten ~ / .Renviron
quelle
Ich habe hier eine Lösung gefunden (danke Carl Schwarz von der SFU) für das Hinzufügen einer persönlichen Bibliothek, die permanent (Sie müssen sie nicht in jeder Sitzung definieren) erkannt wird, ob R oder Rstudio verwendet wird, und Rstudio behandelt sie als Standard auf meinem Mac-Computer. Ich hatte nicht gesehen, dass dies explizit auf SO ausgelegt war, also fasste ich die Schritte zusammen, die sie für Windows und dann für Mac bereitstellten.
Für ein Windows 7-Betriebssystem:
Erstellen Sie ein Verzeichnis auf dem Laufwerk, in dem Sie Ihre persönliche Bibliothek haben möchten, z. B. C: \ User \ Rlibs (oder ein anderes, für das Sie Berechtigungen haben).
Suchen Sie in der Windows-Suchleiste nach "Umgebungsvariable für Ihr Konto bearbeiten", um die Einstellungen der Systemsteuerung zu bearbeiten
Klicken Sie in der Mitte des Fensters "Umgebungsvariablen" auf "Neu ..."
Geben Sie im Fenster "Neue Benutzervariable" R_LIBS als "Variablennamen" und den Pfad zu dem von Ihnen erstellten Verzeichnis der persönlichen Bibliothek ein, z. B. C: \ User \ Rlibs
Klicken Sie auf OK, und das Fenster Variable / Wert sollte im Fenster Benutzervariablen angezeigt werden
Klicken Sie erneut auf OK
Wenn Sie nun R (oder Rstudio) starten und den Befehl eingeben
.libPaths()
, sollten Sie die von Ihnen erstellte persönliche Bibliothek sowie die R-Systembibliothek sehen.Für Mac:
Erstellen Sie in Ihrem Verzeichnis "Home" oder "Benutzername" einen Ordner mit dem Namen " Rlibs"
Starten Sie die Terminal-Anwendung
Typ:
echo "R_LIBS=~/Rlibs"> .Renvrion
Stellen Sie sicher, dass der Fall übereinstimmt.Geben Sie
ls -a
die vollständige Liste der Dateien in dem Verzeichnis , um zu sehen, was sollte nun auch .RenvrionStellen Sie sicher, dass die .Renviron- Datei richtig eingestellt wurde:
more .Renviron
Starten Sie R / Rstudio und geben
.libPaths()
Sie ein. Der neue Pfad zu Ihrer persönlichen Bibliothek sollte angezeigt werden .quelle
Wenn Sie keine Administratorrechte haben, kann es auch hilfreich sein, die
Rprofile.site
Datei in \ R-3.1.0 \ etc zu öffnen und Folgendes hinzuzufügen:Dies wertet den
.libPath()
Befehl direkt beim Start ausquelle
Ich hatte wirklich Probleme, das zu verstehen. gorkypl hat die richtige Lösung oben angegeben, als ich mein OS & Rstudio das letzte Mal neu installiert habe, aber dieses Mal wurde das Festlegen meiner Umgebungsvariablen nicht aufgelöst.
Deinstallieren Sie sowohl R als auch Rstudio, erstellen Sie die Verzeichnisse C: \ R und C: \ Rstudio und installieren Sie beide neu.
Definieren Sie die Benutzervariable R_LIBS_USER in Ihrem bevorzugten Verzeichnis (gemäß der Antwort von gorkypl) und starten Sie Ihren Computer neu, damit die Benutzervariable geladen werden kann. Öffnen Sie Rstudio, Fehler sollten verschwunden sein.
Sie können
Sys.setenv()
R_LIBS_USER auch in den Pfad Ihrer alternativen Bibliothek ändern, was einfacher ist und keinen Neustart Ihres Computers erforderlich macht.So sehen Sie, auf was R_LIBS_USER eingestellt ist:
?Sys.getenv()
Lesen
help(Startup)
ist nützlich.quelle
Wenn Ihre Standardpaketbibliothek nach der Installation einer neuen Version von R oder auf andere Weise geändert wurde, können Sie beide Bibliotheken anhängen, um mithilfe der folgenden Befehle alle Pakete zu verwenden. Holen Sie sich den vorhandenen Bibliothekspfad:
.libPaths()
Stellen Sie nun den vorhandenen und den alten Pfad ein:
.libPaths(c(.libPaths(), "~/yourOldPath"))
Ich hoffe es hilft.
quelle
Ändern Sie einfach den Standardordner für Ihre R-Bibliotheken in einem Verzeichnis ohne Administratorrechte, z
quelle
Ich habe die Readme gelesen. In diesem Fall verwenden Sie .libPaths () in der Befehlszeile, um zu überprüfen, welche Pfade vorhanden sind. Ich hatte früher 2 Bibliothekspfade. Als ich den gewünschten Befehl .libpath ("C: / Programme / R / R-3.2.4revised / library") verwendet habe, hat er den Bibliothekspfad geändert. Als ich .libPaths () erneut in die Befehlszeile eingab, zeigte es mir den richtigen Pfad. Hoffe das hilft
quelle
Unter Ubuntu besteht die empfohlene Methode zum Ändern des Standardbibliothekspfads für einen Benutzer darin, die
R_LIBS_USER
Variable in der~/.Renviron
Datei festzulegen.quelle
Kopieren Sie den obigen Link mit doppeltem Anführungszeichen
Ihr Standardpfad ändert sich für die Installation von Paketen
quelle
Wenn Sie Ihren Bibliothekspfad bei jeder Eingabe in R dauerhaft ändern möchten (ohne .libPath () aufzurufen, funktioniert dies für mich:
Erstellen Sie ein Profil unter Ihrem Home-Verzeichnis. (~ / .Rprofil)
Geben Sie
.libPaths(c( .libPaths(), "your new path" ))
in .Rprofile Datei, Speichern.Öffnen Sie R (ein beliebiges Verzeichnis) und überprüfen Sie, geben Sie einfach ein
.libPaths()
, Sie können feststellen, dass Ihr libaray-Pfad aktualisiert wurde!quelle
Ich habe dies untersucht, weil R Probleme bei der Installation am Standardspeicherort hatte und stattdessen nur die Pakete in den temporären Ordner legte. Es stellte sich heraus, dass es sich um das neueste Update für Mcaffee Endpoint Security handelt, bei dem offenbar Probleme mit R auftreten. Sie können den Bedrohungsschutz deaktivieren, während Sie die Pakete installieren, und es funktioniert ordnungsgemäß.
quelle