Kako pokrenuti R 4.0 u Dockeru - i tri nove R 4.0 značajke

U R 4.0 postoje neke zanimljive promjene i nadogradnje. Ovdje ću pogledati njih troje. Uz to, dat ću vam detaljne upute za instaliranje R 4.0 kako ne bi ometao vašu postojeću R instalaciju - pokretanjem R s Dockerom.

Docker je platforma za stvaranje "spremnika" - potpuno samostalnih, izoliranih okruženja na vašem računalu. Zamislite ih kao mini sustav na vašem sustavu. Uključuju vlastiti operativni sustav, a zatim sve što želite dodati tome - aplikacijski softver, skripte, podaci itd. Spremnici su korisni za puno stvari, ali ovdje ću se usredotočiti na samo jedno: testiranje novih verzija softvera bez zajebavanja trenutne lokalne postavke.

Pokretanje R 4.0 i najnovijeg preglednog izdanja RStudio u Docker spremniku prilično je jednostavno. Ako ne želite slijediti dio Dockera ovog vodiča i želite samo vidjeti što je novo u R, pomaknite se prema dolje do odjeljka "Tri nove značajke R 4.0".

Pokrenite R 4.0 u Docker spremniku

Ako biste željeli nastaviti, instalirajte Docker za radna računala na svoj sustav ako ga još nemate: Idite na //www.docker.com/products/docker-desktop i preuzmite ispravnu verziju radne površine za svoje računalo (Windows, Mac ili Linux). Zatim ga pokrenite. Trebali biste vidjeti ikonu Dota kitova koja radi negdje na vašem sustavu.

Sharon Machlis,

Dalje, treba nam Dockerova slika za R 4.0. Dockerovu sliku možete smatrati skupom uputa za stvaranje spremnika s uključenim određenim softverom. Zahvaljujući Adelmu Filhu (podatkovnom znanstveniku u Brazilu) i projektu Rocker R Docker koji pružaju neke vrlo korisne Dockerove slike. Samo sam malo izmijenio njihove Dockerove slike kako bih napravio onu koju sam koristio u ovom vodiču.

Ovdje je sintaksa pokretanja Dockerove slike na vašem vlastitom sustavu za stvaranje spremnika.

izvršavanje dockera --rm -p 8787: 8787 -v / path / to / local / dir: / home / rstudio / newdir username / docker_image_name: image_tag

dockerje način na koji trebate pokrenuti bilo koju naredbu Docker. runznači da želim pokrenuti sliku i stvoriti spremnik od te slike. Oznaka --rmznači uklanjanje spremnika kad je gotov. Ne morate uključiti --rm; ali ako pokrenete puno spremnika i ne izbrišete ih, počet će zauzimati puno prostora na disku. Potrebna -p 8787:8787je samo za slike koje se moraju izvoditi na sistemskom priključku, što RStudio čini (kao i Shiny ako to planirate jednom uključiti). Gornja naredba navodi port 8787, koji je uobičajeni zadani RStudio.

-vStvara volumen. Sjećate se kad sam rekao da su Docker-ovi spremnici samostalni i izolirani? To znači izolirano . Prema zadanim postavkama spremnik ne može pristupiti ničemu izvan njega, a ostatak vašeg sustava ne može pristupiti ničemu unutar spremnika. Ali ako postavite glasnoću, možete povezati lokalnu mapu s mapom unutar spremnika. Tada se automatski sinkroniziraju. Sintaksa:

-v put / do / lokalnog / direktorija: / put / do / spremnika / direktorija

Kod RStudio obično koristite /home/rstudio/name_of_new_directoryza direktorij spremnika.

Na kraju docker runnaredbe nalazi se ime slike koju želite pokrenuti. Moja slika, kao i mnoge Dockerove slike, pohranjena je na Docker Hub, usluzi koju je Docker postavio za dijeljenje slika. Kao i kod GitHub-a, projektu pristupate navođenjem a username/reponame. U ovom slučaju također obično dodajete :the_tag, što pomaže ako postoje različite verzije iste slike.

Ispod je kôd koji možete izmijeniti za pokretanje moje slike s R 4.0 i najnovijim preglednim izdanjem RStudio na vašem sustavu. Obavezno zamijenite put do jednog od vaših direktorija za / Users / smachlis / Document / MoreWithR.  To možete pokrenuti u prozoru terminala Mac ili Windows naredbenom retku ili prozoru PowerShell.

izvršavanje dockera --rm -p 8787: 8787 -v / Users / smachlis / Documents / MoreWithR: / home / rstudio / morewithr sharon000 / my_rstudio_image: version1

Kad prvi put pokrenete ovu naredbu, Docker će morati preuzeti sliku s Docker Hub-a, tako da može potrajati. Nakon toga, osim ako ne izbrišete lokalnu kopiju slike, to bi trebalo biti puno brže.

Sada kada otvorite localhost:8787u pregledniku, trebali biste vidjeti RStudio.

Sharon Machlis,

Zadano korisničko ime i lozinka su i rstudio, što bi naravno bilo užasno kada biste ovo radili u oblaku. Ali mislim da je u redu na mom lokalnom računalu, jer ja obično nemaju nikakvu lozinku na moje redovne RStudio desktop.

Ako provjerite verziju R u kontejneriranom R / RStudio, vidjet ćete da je to verzija 4.0. RStudio bi trebao biti verzija 1.3.947, najnovije izdanje pregleda u vrijeme kada je ovaj članak prvi put objavljen. To su obje verzije različite od onih instaliranih na mom lokalnom računalu.

Tri nove značajke R 4.0

Pa sada pogledajmo nekoliko novih značajki R 4.0. 

Zadani novi stringsAsFactors

U donjem kodu stvaram jednostavan podatkovni okvir s informacijama o četiri grada, a zatim provjeravam strukturu.

Grad <- c ("New York", "San Francisco", "Boston", "Seattle") Država <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) gustoće <- data.frame (City, State, PopDensity) str (denziteti) 'data.frame': 4 obs. od 3 varijable: $ Grad: chr "New York" "San Francisco" "Boston" "Seattle" $ Država: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962

Primijetili ste nešto neočekivano? Grad i država su znakovni nizovi, iako nisam odredio stringsAsFactors = FALSE.Da, napokon je zadana vrijednost R data.frame stringsAsFactors = FALSE. Ako pokrenem isti kod u starijoj verziji R, bit će faktori Grad i država.

Nove palete boja i funkcije

Zatim pogledajmo novi ugrađeni u funkciji u R 4.0: palette.pals(). Ovo pokazuje neke ugrađene palete boja.

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

Još jedna nova funkcija, palette.colors()daje informacije o ugrađenoj paleti.

 palette.colors (palette = "Tableau 10") plava narančasta crvena lightteal zeleno žuta ljubičasta "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" pink brown brown grey " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Ako zatim na rezultatima pokrenete funkciju paketa vaga show_col(), dobit ćete lijep prikaz palete u boji.

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

Sharon Machlis,

Napravio sam malu funkciju kombinirajući dvije stvari koje bi mogle biti korisne za gledanje nekih ugrađenih paleta u jednom retku koda:

display_built_in_palette <- funkcija (moja_paleta) {

vage :: 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 

Bez posebne r"()"funkcije, koja \nse čita kao prijelom retka i ne prikazuje se.

 string3 <- "Ovdje je kosa crta n \ n" mačka (string3) Ovdje je kosa crta n 

Prije ovoga u bazi R, trebalo je pobjeći toj kosoj crtici drugom povratnom kosom crtom. 

 string4 <- "Uobičajena pobjegla \\ n" mačka (string4) Uobičajena pobjegla \ n 

U ovom primjeru to nije velika stvar, ali može se zakomplicirati kada radite na nečemu poput složenih regularnih izraza.

Puno je novog u R 4.0. Sve detalje možete provjeriti na web mjestu projekta R. 

Više informacija o korištenju Dockera s R potražite u kratkom, ali izvrsnom vodiču za R Docker rOpenSci Labs.

A za više R savjeta, idite na stranicu Učini više s R!