Virtuelle Umgebung in R?


73

Ich habe in R mehrere Beiträge zu Best Practice, Reproduzierbarkeit und Workflow gefunden, zum Beispiel:

Eines der Hauptanliegen ist die Gewährleistung der Portabilität von Code in dem Sinne, dass das Verschieben auf einen neuen Computer (möglicherweise unter einem anderen Betriebssystem) relativ einfach ist und die gleichen Ergebnisse liefert.

Ich komme aus einem Python-Hintergrund und bin an das Konzept einer virtuellen Umgebung gewöhnt. In Verbindung mit einer einfachen Liste der erforderlichen Pakete wird so sichergestellt, dass die installierten Pakete und Bibliotheken auf jedem Computer ohne großen Aufwand verfügbar sind. Sicher, es ist keine Garantie - verschiedene Betriebssysteme haben ihre eigenen Schwächen und Besonderheiten -, aber es bringt Sie zu 95% dorthin.

Existiert so etwas in R? Auch wenn es nicht so raffiniert ist. Zum Beispiel einfach eine Nur-Text-Liste der erforderlichen Pakete und ein Skript verwalten, das alle fehlenden installiert?

Ich werde R zum ersten Mal ernsthaft einsetzen, wahrscheinlich in Verbindung mit Sweave, und möchte im Idealfall bestmöglich beginnen! Danke für deine Gedanken.


4
Gute Frage. Ich habe dafür gestimmt, dies auf SO zu migrieren. Die Frage hat keinen statistischen Inhalt, daher könnten die SO-Leute Ihnen wahrscheinlich eine bessere Antwort geben.
Momo

4
Renv könnte tun, was Sie suchen: github.com/viking/Renv
hrbrmstr

8
Eine Liste von Paketen zu pflegen und sie von der Systembibliothek zu isolieren, ist genau das, was packrat für R tut: rstudio.github.io/packrat
cboettig

1
Jemand sollte eine Antwort in eine legitime Antwort anstelle der Kommentare einfügen. Ich weiß nicht genug R, um zu antworten, aber wenn man sich die Links ansieht, scheint Renv nur Versionen von R zu verwalten, während Packrats Dokumente eher wie eine Übereinstimmung mit virtualenv klingen, in der Sie dieselbe Sprachversion mit unterschiedlichen Abhängigkeitssätzen in verschiedenen verwenden können Projekte.
Joe Germuska

1
"wahrscheinlich in Verbindung mit Sweave" --- Tun Sie sich selbst einen Gefallen und beginnen Sie mit knitr, nicht mit Sweave.
Gregor Thomas

Antworten:


42

Ich werde den Kommentar von @cboettig verwenden, um diese Frage zu lösen.

Packrat

Packrat ist ein Abhängigkeitsmanagementsystem für R. Bietet Ihnen drei wichtige Vorteile (alle auf Ihre Portabilitätsanforderungen ausgerichtet).

  • Isoliert: Wenn Sie ein neues oder aktualisiertes Paket für ein Projekt installieren, werden Ihre anderen Projekte nicht beschädigt und umgekehrt. Das liegt daran, dass packrat jedem Projekt eine eigene private Paketbibliothek gibt.

  • Tragbar: Transportieren Sie Ihre Projekte problemlos von einem Computer auf einen anderen, auch über verschiedene Plattformen hinweg. Packrat erleichtert die Installation der Pakete, von denen Ihr Projekt abhängt.

  • Reproduzierbar: Packrat zeichnet die genauen Paketversionen auf, von denen Sie abhängig sind, und stellt sicher, dass diese genauen Versionen überall installiert werden.

Was kommt als nächstes?

  1. Exemplarische Vorgehensweise: http://rstudio.github.io/packrat/walkthrough.html

  2. Die häufigsten Befehle: http://rstudio.github.io/packrat/commands.html

  3. Verwenden von Packrat mit RStudio: http://rstudio.github.io/packrat/rstudio.html

  4. Einschränkungen und Einschränkungen: http://rstudio.github.io/packrat/limitations.html

Update: Packrat ist veraltet und wird jetzt von renv abgelöst. Vielleicht möchten Sie stattdessen dieses Paket überprüfen.


4
Wie würde Packrat Ihre Abhängigkeiten in einer requirements.txtDatei erfassen und dann über installieren pip install -r ...?
Nick Chammas

Ich weiß nicht warum, aber packrat ist extrem langsam, um Pakete zu installieren. Ich habe buchstäblich zwei Tage verloren, wenn ich versucht habe, ein neues Paket herunterzuladen
D_Serg

@Nick Die Dokumentation hier zeigt einen snapshotBefehl dafür.
Mike O'Connor

21

Der Anaconda-Paketmanager conda unterstützt das Erstellen von R-Umgebungen .

conda create -n r-environment r-essentials r-base
conda activate r-environment

Ich habe eine großartige Erfahrung condadamit gemacht, verschiedene Python-Installationen zu verwalten, sowohl benutzerspezifisch als auch mehrere Versionen für denselben Benutzer. Ich habe R mit condaund getestet jupyter-notebookund es funktioniert super. Zumindest für meine Bedürfnisse, einschließlich RNA-Sequenzierungsanalysen unter Verwendung der DEseq2und verwandter Pakete sowie data.tableund dplyr. Es gibt viele Bioconductor-Pakete, die condaüber Bioconda erhältlich sind, und laut den Kommentaren zu dieser SO-Frage scheint es, als install.packages()könnte dies auch funktionieren.


Ich bin jetzt auch in die Bioinformatik eingestiegen, damit Ihre Antwort noch relevanter wird! Welche IDE verwenden Sie? Ich hatte Probleme, conda in Rstudio zu integrieren - es möchte nicht den richtigen Interpreterpfad verwenden.
Gabriel

1
Spaß! Ich benutze das Jupyter-Notebook für die meisten meiner Bedürfnisse. Ich habe Rstudio schon früher benutzt, aber ich erinnere mich, dass ich auch Probleme hatte, es mit conda zum Laufen zu bringen, und ich bin an das Notebook von Python gewöhnt (was ich bei weitem am häufigsten benutze), also fühle ich mich dort am wohlsten.
Joelostblom

Mein conda R zeigte immer noch den Bibliotheksstandort meines Nicht-conda R an .libPaths()und versuchte dort neue Pakete zu installieren. Ich musste export R_LIBS_USER="/path/to/miniconda2/envs/r.3.3/lib/R/library"im Terminal laufen, bevor ich R startete und versuchte, Pakete zu installieren. Noch testen, aber es sieht so aus, als würde es funktionieren.
user5359531

9

Es sieht so aus, als gäbe es eine andere Option von RStudio-Entwicklern, renv . Es ist auf CRAN verfügbar und ersetzt Packrat.

Kurz gesagt, Sie verwenden renv::init(), um Ihre Projektbibliothek zu initialisieren und renv::snapshot()/ renv::restore(), um den Status Ihrer Bibliothek zu speichern und zu laden.

Ich ziehe diese Option Konda r-Umgebungen vor, da hier alles in der Datei gespeichert ist renv.lock, die für ein Git-Repo festgeschrieben und an das Team verteilt werden kann.


1
Diese Antwort sollte in unserer Zeit definitiv die akzeptierte Antwort sein.
Oliver

0

Schauen Sie sich roveR an, die R-Container-Management-Lösung. Weitere Informationen finden Sie unter https://www.slideshare.net/DavidKunFF/ownr-technical-introduction , insbesondere auf Folie 12.

Führen Sie zum Installieren von roveR den folgenden Befehl in R aus:

install.packages("rover", repos = c("https://lair.functionalfinances.com/repos/shared", "https://lair.functionalfinances.com/repos/cran"))

Um die Leistungsfähigkeit von roveR voll nutzen zu können (einschließlich der Installation bestimmter Versionen von Paketen für die Reproduzierbarkeit), benötigen Sie Zugriff auf ein laiR. Für CRAN können Sie unsere laiR-Instanz unter https://lair.ownr.io zum Hochladen verwenden Wenn Sie Ihre eigenen Pakete mit Ihrer Organisation teilen möchten, benötigen Sie eine laiR-Lizenz. Sie können uns unter der E-Mail-Adresse in der oben verlinkten Präsentation kontaktieren.


Ich denke, diese Ressource existiert nicht mehr
Hack-R

Ja, die Diashow ist weg. Ich kann weder eine Verbindung zu den beiden Repositorys in dieser Antwort noch zu lair.ownr.io herstellen .
Ken Williams

Sorry Leute, laiR ist vorübergehend offline, wir arbeiten daran, es in unser anderes Produkt (die ownR-Plattform) zu integrieren und werden es so schnell wie möglich wieder verfügbar machen.
David Kun

Inhalt nicht verfügbar, scheint, dass dies derzeit keine Antwort ist
baxx

0

Um dies hinzuzufügen:

Hinweis: 1. Haben Sie Anaconda bereits installiert? 2. Angenommen, Ihr Arbeitsverzeichnis ist "C:"

So erstellen Sie die gewünschte Umgebung -> "r_environment_name"

C:\>conda create -n "r_environment_name" r-essentials r-base

Verfügbare Umgebungen anzeigen

C:\>conda info --envs

. .. ...

Umgebung aktivieren

C:\>conda activate "r_environment_name"

(r_environment_name) C:\>

Starten Sie Jupyter Notebook und lassen Sie die Party beginnen

(r_environment_name) C:\> jupyter notebook

Für eine ähnliche "Anforderungen.txt" hilft vielleicht dieser Link -> Gibt es so etwas wie Anforderungen.txt für R?


-1

Wenn Sie nur prüfen möchten, ob Ihr Code auf alternativen Setups funktioniert, empfehle ich, zumindest im Moment kostenlos über die rstudio cloud zu testen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.