So führen Sie R 4.0 in Docker aus - und 3 coole neue R 4.0-Funktionen

Es gibt einige interessante Änderungen und Updates in R 4.0. Hier werde ich mir drei davon ansehen. Außerdem gebe ich Ihnen schrittweise Anweisungen zur Installation von R 4.0, damit Ihre vorhandene R-Installation nicht beeinträchtigt wird - indem Sie R mit Docker ausführen.

Docker ist eine Plattform zum Erstellen von „Containern“ - vollständig eigenständigen, isolierten Umgebungen auf Ihrem Computer. Stellen Sie sich diese wie ein Mini-System auf Ihrem System vor. Sie enthalten ein eigenes Betriebssystem und dann alles, was Sie hinzufügen möchten - Anwendungssoftware, Skripte, Daten usw. Container sind für viele Dinge nützlich, aber hier werde ich mich nur auf eines konzentrieren: das Testen neuer Softwareversionen ohne Ihr aktuelles lokales Setup zu vermasseln.

Das Ausführen von R 4.0 und der neuesten Vorschauversion von RStudio in einem Docker-Container ist ziemlich einfach. Wenn Sie dem Docker-Teil dieses Tutorials nicht folgen und nur sehen möchten, was in R neu ist, scrollen Sie nach unten zum Abschnitt „Drei neue R 4.0-Funktionen“.

Führen Sie R 4.0 in einem Docker-Container aus

Wenn Sie mitmachen möchten , installieren Sie Desktop Docker auf Ihrem System, falls Sie es noch nicht haben: Gehen Sie zu //www.docker.com/products/docker-desktop und laden Sie die richtige Desktop-Version für Ihren Computer herunter (Windows, Mac oder Linux). Starten Sie es dann. Sie sollten ein Wal-Docker-Symbol sehen, das irgendwo auf Ihrem System ausgeführt wird.

Sharon Machlis,

Als nächstes benötigen wir ein Docker-Image für R 4.0. Sie können sich ein Docker-Image als eine Reihe von Anweisungen zum Erstellen eines Containers mit einer bestimmten Software vorstellen. Dank an Adelmo Filho (ein Datenwissenschaftler in Brasilien) und das Rocker R Docker-Projekt, die einige sehr nützliche Docker-Bilder liefern. Ich habe die Docker-Bilder nur geringfügig geändert, um die in diesem Tutorial verwendeten zu erstellen.

Hier ist die Syntax zum Ausführen eines Docker-Images auf Ihrem eigenen System, um einen Container zu erstellen.

docker run --rm -p 8787: 8787 -v / path / to / local / dir: / home / rstudio / newdir Benutzername / docker_image_name: image_tag

dockerSo müssen Sie einen Docker-Befehl starten. runbedeutet, dass ich ein Bild ausführen und aus diesem Bild einen Container erstellen möchte. Das --rmFlag bedeutet, dass der Container entfernt wird, wenn er fertig ist. Sie müssen nicht haben umfassen --rm; Wenn Sie jedoch viele Container ausführen und diese nicht löschen, beanspruchen sie viel Speicherplatz. Dies -p 8787:8787wird nur für Images benötigt, die auf einem Systemport ausgeführt werden müssen, was RStudio tut (ebenso wie Shiny, wenn Sie dies eines Tages einschließen möchten). Der obige Befehl gibt Port 8787 an, was die übliche Standardeinstellung von RStudio ist.

Das -vschafft ein Volumen. Erinnern Sie sich, als ich sagte, Docker-Container seien in sich geschlossen und isoliert? Das heißt isoliert . Standardmäßig kann der Container auf nichts außerhalb des Containers zugreifen , und der Rest Ihres Systems kann auf nichts innerhalb des Containers zugreifen . Wenn Sie jedoch ein Volume einrichten, können Sie einen lokalen Ordner mit einem Ordner im Container verknüpfen. Dann werden sie automatisch synchronisiert. Die Syntax:

-v Pfad / zu / lokalem / Verzeichnis: / Pfad / zu / Container / Verzeichnis

Mit RStudio verwenden Sie normalerweise /home/rstudio/name_of_new_directoryfür das Containerverzeichnis.

Am Ende des docker runBefehls steht der Name des Images, das Sie ausführen möchten. Mein Bild wird wie viele Docker-Bilder in Docker Hub gespeichert, einem von Docker eingerichteten Dienst zum Teilen von Bildern. Wie bei GitHub greifen Sie auf ein Projekt zu, indem Sie a angeben username/reponame. In diesem Fall fügen Sie normalerweise auch hinzu :the_tag, was hilfreich ist, wenn es verschiedene Versionen desselben Bildes gibt.

Unten finden Sie Code, den Sie ändern können, um mein Image mit R 4.0 und der neuesten Vorschauversion von RStudio auf Ihrem System auszuführen. Stellen Sie sicher, dass Sie / Users / smachlis / Document / MoreWithR durch einen Pfad zu einem Ihrer Verzeichnisse ersetzen.  Sie können dies in einem Mac-Terminalfenster oder einer Windows-Eingabeaufforderung oder einem PowerShell-Fenster ausführen.

docker run --rm -p 8787: 8787 -v / Users / smachlis / Documents / MoreWithR: / home / rstudio / morewithr sharon000 / my_rstudio_image: version1

Wenn Sie diesen Befehl zum ersten Mal ausführen, muss Docker das Image von Docker Hub herunterladen, daher kann es eine Weile dauern. Danach sollte es viel schneller sein, es sei denn, Sie löschen Ihre lokale Kopie des Bildes.

Wenn Sie jetzt localhost:8787in einem Browser öffnen , sollte RStudio angezeigt werden.

Sharon Machlis,

Der Standardbenutzername und das Standardkennwort sind beide rstudio, was natürlich schrecklich wäre, wenn Sie dies in der Cloud ausführen würden. Aber ich denke, es ist in Ordnung auf meinem lokalen Computer, da ich normalerweise kein Passwort auf meinem normalen RStudio-Desktop habe.

Wenn Sie die R-Version in Ihrem containerisierten R / RStudio überprüfen, sehen Sie, dass es sich um Version 4.0 handelt. RStudio sollte Version 1.3.947 sein, die neueste Vorschau zum Zeitpunkt der Erstveröffentlichung dieses Artikels. Dies sind beide verschiedene Versionen von denen, die auf meinem lokalen Computer installiert sind.

Drei neue R 4.0-Funktionen

Schauen wir uns nun einige neue Funktionen von R 4.0 an. 

Standardmäßig neue StringsAsFactors

Im folgenden Code erstelle ich einen einfachen Datenrahmen mit Informationen zu vier Städten und überprüfe dann die Struktur.

Stadt <- c ("New York", "San Francisco", "Boston", "Seattle") Bundesstaat <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403) , 18838, 13841, 7962) Dichten <- data.frame (Stadt, Bundesland, PopDensity) str (Dichten) 'data.frame': 4 obs. von 3 Variablen: $ Stadt: chr "New York" "San Francisco" "Boston" "Seattle" $ Bundesstaat: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962

Bemerken Sie etwas Unerwartetes? Stadt und Bundesland sind Zeichenketten, obwohl ich nicht stringsAsFactors = FALSE.Ja angegeben habe. Endlich ist die Standardeinstellung für R data.frame stringsAsFactors = FALSE. Wenn ich denselben Code in einer älteren Version von R ausführe, sind Stadt und Bundesland Faktoren.

Neue Farbpaletten und Funktionen

Schauen wir uns als nächstes eine neue integrierte Funktion in R 4.0 an : palette.pals(). Dies zeigt einige eingebaute Farbpaletten.

 palette.pals () [1] "R3" "R4" "ggplot2" "Okabe-Ito" [5] "Akzent" "Dunkel 2" "Gepaart" "Pastell 1" [9] "Pastell 2" "Set 1" "Set 2" "Set 3" [13] "Tableau 10" "Classic Tableau" "Polychrome 36" "Alphabet" 

Eine weitere neue Funktion palette.colors()bietet Informationen zu einer integrierten Palette.

 palette.colors (palette = "Tableau 10") blau orange rot hellrot grün gelb lila # 4E79A7 # F28E2B # E15759 # 76B7B2 # 59A14F # EDC948 # B07AA1 rosa braun hellgrau # FF9DA7 # 9C755F # BAB0AC 

Wenn Sie dann die show_col()Funktion des Waagenpakets für die Ergebnisse ausführen , erhalten Sie eine schöne Farbanzeige der Palette.

scale :: show_col (palette.colors (palette = "Tableau 10"))

Sharon Machlis,

Ich habe eine kleine Funktion erstellt, die beide kombiniert, um einige der integrierten Paletten in einer einzigen Codezeile zu betrachten:

display_built_in_palette <- Funktion (my_palette) {

scale :: show_col (palette.colors (palette = my_palette))

}}

display_built_in_palette ("Okabe-Ito")

Sharon Machlis,

None of this code works in earlier versions of R, since only scales::show_col() is available before R 4.0.

Escaping characters within strings

Finally, let’s look at a new function that makes it easier to include characters that usually need to be escaped in strings. 

The syntax is r"(my string here)". Here is one example:

string1 <- r"("I no longer need to escape these " double quotes inside a quote," they said.)"

That string includes an un-escaped quotation mark inside a pair of double quotes. If I display that string, I get this:

 > cat(string1) "I no longer need to escape these " double quotes inside a quote," they said. 

I can also print a literal \n inside the new function.

 string2 <- r"(Here is a backslash n \n)" cat(string2) Here is a backslash n \n 

Ohne die r"()"Sonderfunktion, die \nals Zeilenumbruch gelesen wird und nicht angezeigt.

 string3 <- "Hier ist ein Backslash n \ n" cat (string3) Hier ist ein Backslash n 

Vorher in Basis R mussten Sie diesen Backslash mit einem zweiten Backslash umgehen. 

 string4 <- "Übliches Escapezeichen \\ n" cat (string4) Übliches Escapezeichen \ n 

Das ist in diesem Beispiel keine große Sache, aber es kann kompliziert werden, wenn Sie an so etwas wie komplexen regulären Ausdrücken arbeiten.

In R 4.0 gibt es noch viel mehr Neues. Sie können alle Details auf der R-Projekt-Website überprüfen. 

Weitere Informationen zur Verwendung von Docker mit R finden Sie im kurzen, aber hervorragenden R Docker-Tutorial von rOpenSci Labs.

Weitere R-Tipps finden Sie auf der Seite Mehr mit R tun!