it-swarm.com.de

Wie werden Pakete automatisch in R geladen?

Könnten Sie mir eine Möglichkeit vorschlagen, Pakete in R automatisch zu laden? Ich meine, ich möchte eine Sitzung in R starten, ohne library('package name') mehrmals verwenden zu müssen. Angenommen, ich habe alle Pakete heruntergeladen, die ich beim nächsten Start von R verwenden möchte.

51
Nestorghh

Fügen Sie library(foo) in Ihre .Rprofile -Datei ein oder setzen Sie R_DEFAULT_PACKAGES: siehe ?Rprofile ...

Insbesondere (weil ?Rprofile lang und möglicherweise einschüchternd ist):

Wenn Sie zu Beginn andere Pakete als die Standardpakete verwenden möchten, rufen Sie in der Datei ".Rprofile" oder "Rprofile.site" die Option "options" auf. Beispielsweise werden mit "options (defaultPackages = character ())" beim Start keine zusätzlichen Pakete angehängt (nur das "base" -Paket) (oder "R_DEFAULT_PACKAGES = NULL" als Umgebungsvariable festgelegt, bevor R ausgeführt wird). Die Verwendung von "options (defaultPackages =" ")" oder "R_DEFAULT_PACKAGES =" "" erzwingt die Standardeinstellung des R-Systems .

Da Sie wahrscheinlich möchten , dass alle Standardpakete geladen werden, und dann zusätzliche (anstatt beispielsweise einige der Standardpakete nicht zu laden), können Sie entweder setzen

library("mypackage1")
library("mypackage2")
[etc.]

oder mit options(defaultPackages=...):

options(defaultPackages=c(getOption("defaultPackages"),
       "mypackage1","mypackage2", ... [etc.]))

in deinem .Rprofile an hänge deine gewünschten Pakete an die Standardvorgaben an.

edit (aus dem Kommentar kopiert), damit dies in Rstudio : http://rstudio.org) funktioniert/docs/using/workspaces schlägt vor, dass Rstudio .Rprofile ausführt und dann die anderen in R Startup [ http://stat.ethz.ch/R-manual/R- patched/library/base/html/Startup.html ] "(entspricht ?Rprofile). Es ist mehrdeutig, ob es sich um Rprofile.site handelt oder nicht.

edit # 2 : laut Kommentar unten funktioniert es mit einer neueren Version von Rstudio.

71
Ben Bolker

Es gibt eine Datei namens .Rprofile, die nichts anderes als ein Skript ist, das jedes Mal ausgeführt wird, wenn Sie eine neue Sitzung von R starten.

Sie müssen library(package) hinzufügen. Wenn Sie Unix verwenden, befindet es sich wahrscheinlich in Ihrem Home-Ordner als versteckte Datei.

15
João Daniel

Quick-R-Seite zum Anpassen von R-Startup enthält im Wesentlichen die gleichen Informationen wie in den Antworten von Ben und Joao, ist aber vielleicht etwas klarer. Erstellen Sie eine Kopie der Datei Rprofile.site mit den gewünschten Änderungen in Ihrem Home-Ordner (Dokumente unter Windows) und nennen Sie sie .Rprofile.

EDIT: Mir ist aufgefallen, dass R 3.0.0 nicht mehr aus dem Ordner Dokumente herausschaut, sondern das Home-Verzeichnis (Benutzername) des Benutzers unter Windows 7 verwendet. Dies kann jedoch ein Installationsproblem sein (dh, dass ich die Installation durchgeführt habe R "falsch" zuvor). Die in dieser Antwort verlinkte Quick-R-Seite zeigt jedoch die richtige Vorgehensweise. Wenn jemand anderes auf dieses Problem stößt, können Sie .Rprofile in das Home-Verzeichnis des Benutzers kopieren.

8
Mikko

Die schnelle Antwort ist, dass Sie Ihre R-Pakete in der .Rprofile-Datei ablegen sollten, wie von jedem vorgeschlagen. 

Beachten Sie jedoch, dass R diese Datei liest und dann die R-Basispakete lädt. Siehe von Startup :

Beachten Sie, dass bei der Bereitstellung der Site- und Benutzerprofildateien nur die Basispaket wird geladen,

Dies kann zu Problemen führen, wenn das Paket, das Sie laden möchten, einige R-Basisfunktionen erweitert/überschreibt. Siehe zum Beispiel mit tidyverse :: filter: https://github.com/tidyverse/dplyr/issues/1611

Ich kann bisher zwei Lösungen sehen:

  1. Verwenden Sie .First.sys() in der ersten Zeile Ihrer .Rprofile-Datei: Dies ist der Befehl, der normalerweise nach dem Lesen des .R-Profils ausgeführt wird, das die Pakete in getOption("defaultPackages") lädt. 

  2. Aktualisieren Sie die Option defaultPackages: Verwenden Sie nicht library() in Ihrem .R-Profil, sondern etwas Ähnliches.

    old <- getOption("defaultPackages")
    options(defaultPackages = c(old, "tidyverse"))
    
1
Matifou