Programmering

Sådan køres R 4.0 i Docker - og 3 seje nye R 4.0-funktioner

Der er nogle interessante ændringer og opdateringer i R 4.0. Her vil jeg se på tre af dem. Derudover giver jeg dig trinvise instruktioner om installation af R 4.0, så det ikke forstyrrer din eksisterende R-installation - ved at køre R med Docker.

Docker er en platform til oprettelse af "containere" - helt selvstændige, isolerede miljøer på din computer. Tænk på dem som et mini-system på dit system. De inkluderer deres eget operativsystem, og derefter alt hvad du vil føje til det - applikationssoftware, scripts, data osv. Beholdere er nyttige til mange ting, men her vil jeg fokusere på kun en: test af nye versioner af software uden at skrue op for din nuværende lokale opsætning.

At køre R 4.0 og den seneste forhåndsvisning af RStudio i en Docker-container er ret let. Hvis du ikke vil følge med Docker-delen af ​​denne vejledning, og du bare vil se, hvad der er nyt i R, skal du rulle ned til afsnittet "Tre nye R 4.0-funktioner".

Kør R 4.0 i en Docker-container

hvis du ville gerne følge med, installer Desktop Docker på dit system, hvis du ikke allerede har det: Gå til //www.docker.com/products/docker-desktop og download den rigtige desktopversion til din computer (Windows, Mac eller Linux). Start den derefter. Du skal se et hval-Docker-ikon, der kører et eller andet sted på dit system.

Sharon Machlis,

Dernæst har vi brug for et Docker-billede til R 4.0. Du kan tænke på et Docker-billede som et sæt instruktioner til at oprette en container med specifik software inkluderet. Tak til Adelmo Filho (en dataforsker i Brasilien) og Rocker R Docker-projektet, der giver nogle meget nyttige Docker-billeder. Jeg ændrede deres Docker-billeder bare lidt for at skabe den, jeg brugte i denne vejledning.

Her er syntaksen til løb et Docker-billede på dit eget system for at oprette en container.

docker-kørsel --rm -p 8787: 8787 -v / sti / til / local / dir: / home / rstudio / newdir-brugernavn / docker_image_name: image_tag

docker er, hvordan du skal starte en hvilken som helst Docker-kommando. løb betyder, at jeg vil køre et billede og oprette en container fra det billede. Det --rm flag betyder at fjerne containeren, når den er færdig. Det gør du ikke har at medtage --rm; men hvis du kører mange containere og ikke sletter dem, begynder de at tage meget diskplads. Det -p 8787: 8787 er kun nødvendigt for billeder, der skal køre på en systemport, hvilket RStudio gør (ligesom Shiny, hvis du planlægger at medtage det en dag). Kommandoen ovenfor specificerer port 8787, som er RStudios sædvanlige standard.

Det -v opretter et volumen. Husker du, da jeg sagde, at Docker-containere er selvstændige og isolerede? Det betyder isoleret. Containeren har som standard ikke adgang hvad som helst uden for det, og resten af ​​dit system kan ikke få adgang til noget inde beholderen. Men hvis du opretter en lydstyrke, kan du linke en lokal mappe med en mappe inde i containeren. Derefter synkroniseres de automatisk. Syntaksen:

-v sti / til / lokal / katalog: / sti / til / container / katalog

Med RStudio bruger du normalt / home / rstudio / name_of_new_directory til containerbiblioteket.

I slutningen af docker-kørsel kommando er navnet på det billede, du vil køre. Mit billede er, ligesom mange Docker-billeder, gemt på Docker Hub, en service oprettet af Docker til deling af billeder. Som med GitHub får du adgang til et projekt ved at angive et brugernavn / reponame. I dette tilfælde tilføjer du normalt også : the_tag, hvilket hjælper, hvis der er forskellige versioner af det samme billede.

Nedenfor er kode, du kan ændre for at køre mit billede med R 4.0 og den seneste forhåndsvisning af RStudio på dit system. Sørg for at erstatte en sti til en af dit mapper til / Brugere / smachlis / Dokument / MoreWithR. Du kan køre dette i et Mac-terminalvindue eller Windows-kommandoprompt eller PowerShell-vindue.

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

Når du kører denne kommando for første gang, skal Docker downloade billedet fra Docker Hub, så det kan tage et stykke tid. Derefter, medmindre du sletter din lokale kopi af billedet, skal det være meget hurtigere.

Nu når du åbner lokal vært: 8787 i en browser skal du se RStudio.

Sharon Machlis,

Standardbrugernavnet og adgangskoden er begge rstudio, hvilket naturligvis ville være forfærdeligt, hvis du kørte dette i skyen. Men jeg synes, det er fint på min lokale maskine, da jeg normalt ikke har det nogen adgangskode på mit almindelige RStudio-skrivebord.

Hvis du tjekker R-versionen i din containeriserede R / RStudio, ser du den er version 4.0. RStudio skal være version 1.3.947, den seneste forhåndsvisning på det tidspunkt, hvor denne artikel først blev offentliggjort. Disse er begge forskellige versioner fra dem, der er installeret på min lokale maskine.

Tre nye R 4.0-funktioner

Så lad os nu se på et par nye funktioner i R 4.0.

Nye stringsAsFactors standard

I koden nedenfor opretter jeg en simpel dataramme med information om fire byer og kontrollerer derefter strukturen.

 By <- c ("New York", "San Francisco", "Boston", "Seattle") Stat <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) densiteter <- data.frame (By, stat, PopDensity) str (densiteter) 'data.frame': 4 obs. af 3 variabler: $ By: chr "New York" "San Francisco" "Boston" "Seattle" $ Stat: chr "NY" "CA" "MA" "Seattle" $ PopDensitet: num 26403 18838 13841 7962 

Bemærk noget uventet? By og stat er karakterstrenge, selvom jeg ikke specificerede det stringsAsFactors = FALSE. Ja, endelig er R data.frame standard stringsAsFactors = FALSE. Hvis jeg kører den samme kode i en ældre version af R, vil byen og staten være faktorer.

Nye farvepaletter og funktioner

Lad os derefter se på en ny indbygget funktion i R 4.0: palette.pals (). Dette viser nogle indbyggede farvepaletter.

 palette.pals () [1] "R3" "R4" "ggplot2" "Okabe-Ito" [5] "Accent" "Dark 2" "Parret" "Pastel 1" [9] "Pastel 2" "Set 1" "Sæt 2" "Sæt 3" [13] "Tableau 10" "Classic Tableau" "Polychrome 36" "Alfabet" 

En anden ny funktion, palette.colors (), giver information om en indbygget palet.

 palette.farver (palette = "Tableau 10") blå orange rød lysteal grøn gul lilla "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" lysebrun lysegrå " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Hvis du derefter kører vægtpakken show_col () funktion på resultaterne, får du en flot farvedisplay af paletten.

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

Sharon Machlis,

Jeg lavede en lille funktion, der kombinerede de to, der kunne være nyttige til at se på nogle af de indbyggede paletter i en enkelt kodelinje:

display_built_in_palette <- funktion (min_palette) {

skalaer :: show_col (palette.colors (palette = min_palette))

}

display_built_in_palette ("Okabe-Ito")

Sharon Machlis,

Ingen af ​​denne kode fungerer i tidligere versioner af R, da kun skalaer :: show_col () er tilgængelig før R 4.0.

Undslippe tegn inden for strenge

Lad os endelig se på en ny funktion, der gør det lettere at inkludere tegn, der normalt skal undslippes i strenge.

Syntaksen er r "(min streng her)". Her er et eksempel:

string1 <- r "(" Jeg har ikke længere brug for at undslippe disse "dobbelt citater inde i et citat," sagde de.) "

Denne streng inkluderer et ikke-undsluppet anførselstegn inde i et par dobbelt anførselstegn. Hvis jeg viser den streng, får jeg dette:

 > kat (streng1) "Jeg behøver ikke længere undslippe disse" dobbelte citater inde i et tilbud, "sagde de. 

Jeg kan også udskrive bogstaveligt \ n inde i den nye funktion.

 streng2 <- r "(Her er en tilbageslag n \ n)" kat (streng2) Her er en tilbageslag n \ n 

Uden det specielle r "()" funktion, at \ n læses som en linjeskift og vises ikke.

 string3 <- "Her er en tilbageslag n \ n" kat (string3) Her er en tilbageslag n 

Før dette i base R var du nødt til at undslippe den tilbageslag med en anden tilbageslag.

 string4 <- "Usædvanlig undsluppet \ n" kat (string4) Usædvanlig undsluppet \ n 

Det er ikke noget stort i dette eksempel, men det kan blive kompliceret, når du arbejder på noget som komplekse regulære udtryk.

Der er meget mere nyt i R 4.0. Du kan tjekke alle detaljerne på R-projektets websted.

For mere om brug af Docker med R, se rOpenSci Labs 'korte, men fremragende R Docker-vejledning.

Og for flere R-tip, gå til siden Gør mere med R!