it-swarm.com.de

Ändern Sie den R-Standardbibliothekpfad mit .libPaths in Rprofile.site, um zu funktionieren

Ich verwende R unter Windows und 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 den Speicherort der Bibliothek 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 den Bibliothekspfad irgendwie C:/software/Rpackages hinzufügen könnte und ihn daher nicht jedes Mal eingeben muss.

Bei meiner Online-Suche habe ich herausgefunden, dass eine Möglichkeit besteht, die Rprofile.site-Datei zu bearbeiten und die Zeile hinzuzufügen

.libPaths("C:/software/Rpackages")

Nach dem Ausführen und Starten von RStudio ist dies jedoch die Ausgabe, die ich bekomme

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

Der .libPaths-Befehl, den ich zum Rprofile.site hinzugefügt habe, scheint keine Auswirkung 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 einzugeben?

Hinweis: Wenn ich RStudio starte, scheint der .libPaths()-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?

158
I Like to Code

Im Allgemeinen versuche ich, alle meine Pakete in einer Bibliothek zu speichern. Wenn Sie jedoch eine Bibliothek hinzufügen möchten, fügen Sie die neue Bibliothek der vorhandenen Bibliothek hinzu.

.libPaths( c( .libPaths(), "~/userLibrary") )

Dann bekomme ich:

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/davidwinsemius/userLibrary"  

Die .libPaths-Funktion unterscheidet sich ein wenig von den meisten anderen Nicht-Grafikfunktionen. Es funktioniert über Nebeneffekt. Die Funktionen Sys.getenv und Sys.setenv, die die R-Umgebungsvariablen melden und ändern, wurden getrennt, aber .libPaths kann entweder sein Ziel melden oder ändern. Informationen zum Startvorgang von R finden Sie auf der ?Startup-Hilfeseite. RStudio-Material finden Sie unter: https://support.rstudio.com/hc/de-us/articles/200549016-Customizing-RStudio

In Ihrem Fall scheint es, dass RStudio die Einstellungen von Rprofile.site nicht beachtet oder diese Einstellungen überschreibt, indem sie eine .Rprofile-Einstellung aus einem der RStudio-Standardeinstellungen lesen. Es sollte auch erwähnt werden, dass das Ergebnis dieser Operation auch den Inhalt von Aufrufen an .Library und .Library.site anhängt, was ein weiterer Grund dafür ist, dass ein gehostetes RStudio- (oder ein beliebiges IDE oder ein in einem Netzwerk installiertes R) ein anderes Verhalten zeigt .

126
42-

Die richtige Lösung besteht darin, die Umgebungsvariable R_LIBS_USER auf den Wert des Dateipfads des gewünschten Bibliotheksordners zu setzen, anstatt dass RStudio eine Rprofile.site-Datei erkennt. 

Um die Umgebungsvariable 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), z.

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

Durch die Einstellung von R_LIBS_USER wird sichergestellt, dass die Bibliothek zuerst in .libPaths () angezeigt wird, unabhängig davon, ob RStudio direkt gestartet wird oder indem Sie mit der rechten Maustaste auf eine Datei klicken und "Öffnen mit" zum Starten von RStudio auswählen. 

Die Rprofile-Lösung kann funktionieren, wenn RStudio immer durch Klicken auf die RStudio-Verknüpfung gestartet wird. In diesem Fall reicht es aus, dass das Standardarbeitsverzeichnis auf das Verzeichnis eingestellt wird, in dem sich Ihr Rprofile befindet. Die Rprofile-Lösung funktioniert nicht, wenn Sie zum Starten von RStudio auf eine Datei klicken, da dadurch das Arbeitsverzeichnis vom Standardarbeitsverzeichnis abweicht.

173
Paweł Rumian

Ich konnte das Problem lösen, indem ich den Code in der .Rprofile-Datei im Standardarbeitsverzeichnis ablegte.

Zuerst habe ich den Speicherort des Standardarbeitsverzeichnisses gefunden

> getwd()
[1] "C:/Users/me/Documents"

Dann habe ich mit einem Texteditor eine einfache .Rprofile-Datei mit der folgenden Zeile geschrieben

.libPaths("C:/software/Rpackages")

Wenn ich R starte und .libPaths() starte, erhalte ich die gewünschte Ausgabe:

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
18
I Like to Code
12
bowen.li

Wenn Sie nicht über Administratorrechte verfügen, kann es hilfreich sein, die Rprofile.site-Datei unter\R-3.1.0\etc zu öffnen und Folgendes hinzuzufügen:

.First <- function(){
  .libPaths("your path here")
}

Dadurch wird der Befehl .libPath() direkt beim Start ausgewertet

8
schlusie

Ich fand, was ich denke, eine Lösung hier (danke Carl Schwarz von SFU) für das Hinzufügen einer persönlichen Bibliothek, die permanent (Sie müssen es nicht jede Sitzung definieren müssen) erkannt werden, ob R oder Rstudio und Rstudio verwendet werden behandelt es als Standard auf meinem Mac-Computer. Ich hatte es nicht explizit in SO gesehen, also habe ich die von ihnen bereitgestellten Schritte für Windows und dann für Mac zusammengefasst. 

Für ein Windows 7-Betriebssystem:

  1. Erstellen Sie auf dem Laufwerk ein Verzeichnis, in dem Sie Ihre persönliche Bibliothek haben möchten, z. C:\User\Rlibs (oder ein anderer, für den Sie Berechtigungen haben)

  2. Suchen Sie in der Windows-Suchleiste nach "Umgebungsvariable für Ihr Konto bearbeiten", um die Control Panel-Einstellungen zu bearbeiten

  3. Klicken Sie in der Mitte des Fensters "Umgebungsvariablen" auf "Neu ..."

  4. Geben Sie im Fenster "Neue Benutzervariable" R_LIBS als "Variablenname" und den Pfad zum persönlichen Bibliotheksverzeichnis ein, z. C:\User\Rlibs

  5. Klicken Sie auf OK und Sie sollten das Variablen/Wert-Paar im Fenster Benutzervariablen sehen

  6. Klicken Sie erneut auf OK

Wenn Sie nun R (oder Rstudio) starten und den Befehl .libPaths() eingeben, sollten Sie die von Ihnen erstellte persönliche Bibliothek sowie die R-Systembibliothek sehen.

Für Mac:

  1. Erstellen Sie im Verzeichnis "Home" oder "Benutzername" einen Ordner mit dem Namen Rlibs.

  2. Starten Sie die Terminalanwendung

  3. Geben Sie Folgendes ein: echo "R_LIBS=~/Rlibs"> .Renvrion Stellen Sie sicher, dass der Fall übereinstimmt.

  4. Geben Sie ls -a ein, um die vollständige Liste der Dateien im Verzeichnis anzuzeigen, die jetzt .Renvrion enthalten sollte.

  5. Stellen Sie sicher, dass die Datei .Renviron ordnungsgemäß festgelegt wurde: more .Renviron

Starten Sie R/Rstudio und geben Sie .libPaths() ein. Nun sollte der neue Pfad zu Ihrer persönlichen Bibliothek angezeigt werden. 

7
Whalen

Ich hatte echte Probleme damit, dies zu verstehen. gorkypl gab die richtige Lösung an, als ich das Betriebssystem und das Rstudio zum letzten Mal neu installiert habe, aber dieses Mal konnte das Einstellen meiner Umgebungsvariablen nicht aufgelöst werden.

Deinstallierte R und Rstudio, erstellte die Verzeichnisse C:\R und C:\Rstudio und installierte beide neu.

Definieren Sie die Benutzervariable R_LIBS_USER in Ihrem bevorzugten Verzeichnis (gemäß der Antwort von gorkypl), und starten Sie den Computer neu, damit die Benutzervariable geladen wird. Open Rstudio, Fehler sollten verschwunden sein.

Sie können auch Sys.setenv() verwenden, um R_LIBS_USER in den Pfad Ihrer alternativen Bibliothek zu ändern, was einfacher ist und Ihren Computer nicht neu starten muss.

Um zu sehen, was für R_LIBS_USER festgelegt ist: ?Sys.getenv()

Das Lesen von help(Startup) ist nützlich.

4
felixmc

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 alle Pakete mit Hilfe der folgenden Befehle 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.

2
Shivong Birla

Ich habe die Readme gelesen. Verwenden Sie in der Befehlszeile .libPaths (), um zu überprüfen, welche Pfade vorhanden sind. Ich hatte früher 2 Bibliothekspfade. Wenn ich den Befehl .libpath ("C:/Programme/R/R-3.2.4revised/library") verwendet habe, an dem ich wollte, wurde der Bibliothekspfad geändert. Als ich in der Kommandozeile erneut .libPaths () eingab, wurde mir der richtige Pfad angezeigt. Hoffe das hilft

1
getwd()
# [1] "C:/Users/..../software/My R studio"

kopieren Sie den obigen Link mit doppeltem umgekehrten Komma

.libPaths(new="C:/Users/..../software/My R studio")

Ihr Standardpfad wird für die Installation von Paketen geändert 

Wenn Sie Ihren Bibliothekspfad dauerhaft ändern möchten (ohne jedes Mal .libPath () aufzurufen, wenn Sie R eingeben), funktioniert dies für mich:

  1. erstellen Sie .Rprofile in Ihrem Home-Verzeichnis. (~/.Rprofile)

  2. geben Sie .libPaths(c( .libPaths(), "your new path" )) in die .Rprofile-Datei ein und speichern Sie sie.

  3. öffne R (ein beliebiges Verzeichnis) und überprüfe, indem du .libPaths() eingibst.

0
Pengyao

Ändern Sie einfach den Standardordner für Ihre R-Bibliotheken in einem Verzeichnis ohne Administratorrechte, z.

.libPaths("C:/R/libs")