Programiranje

Kako zagnati R 4.0 v Dockerju - in tri nove nove funkcije R 4.0

V R 4.0 je nekaj zanimivih sprememb in posodobitev. Tu si jih bom ogledal tri. Poleg tega vam bom dal podrobna navodila za namestitev R 4.0, tako da ne bo motil vaše obstoječe namestitve R - z zagonom R z Dockerjem.

Docker je platforma za ustvarjanje "vsebnikov" - popolnoma samostojnih, izoliranih okolij v vašem računalniku. Mislite na njih kot na mini sistem v vašem sistemu. Vključujejo svoj operacijski sistem in nato vse, kar želite k temu dodati - aplikacijsko programsko opremo, skripte, podatke itd. Zabojniki so uporabni za veliko stvari, vendar se bom tukaj osredotočil le na eno: testiranje novih različic programske opreme brez zajezitve trenutne lokalne nastavitve.

Zagon R 4.0 in najnovejše predogledne različice RStudio v vsebniku Docker je precej enostaven. Če ne želite spremljati dela Dockerja v tej vadnici in želite samo videti, kaj je novega v R, se pomaknite navzdol do razdelka »Tri nove funkcije R 4.0«.

Zaženite R 4.0 v Dockerjevem vsebniku

Če ti bi želite nadaljevati, namestite namizni Docker v sistem, če ga še nimate: Pojdite na //www.docker.com/products/docker-desktop in prenesite pravo namizno različico za svoj računalnik (Windows, Mac ali Linux). Nato ga zaženite. Videti bi morali ikono Dota kita, ki se izvaja nekje v vašem sistemu.

Sharon Machlis,

Nato potrebujemo Dockerjevo sliko za R 4.0. Dockerjevo sliko si lahko predstavljate kot niz navodil za ustvarjanje vsebnika s priloženo določeno programsko opremo. Hvala Adelmu Filho (podatkovni znanstvenik v Braziliji) in projektu Rocker R Docker, ki ponuja nekaj zelo uporabnih Dockerjevih slik. Njihove slike Dockerja sem le malo spremenil, da sem naredil tisto, ki sem jo uporabil v tej vadnici.

Tu je sintaksa teči sliko Dockerja v vašem sistemu za ustvarjanje vsebnika.

docker run --rm -p 8787: 8787 -v / path / to / local / dir: / home / rstudio / newdir uporabniško ime / docker_image_name: image_tag

docker je, kako morate zagnati kateri koli ukaz Docker. teči pomeni, da želim zagnati sliko in iz te slike ustvariti vsebnik. The - rm flag pomeni odstranitev vsebnika, ko je končan. Saj ne imeti vključuje - rm; če pa zaženete veliko vsebnikov in jih ne izbrišete, bodo začeli zasedati veliko prostora na disku. The -p 8787: 8787 je potreben samo za slike, ki se morajo izvajati na sistemskih vratih, kar RStudio počne (prav tako Shiny, če nameravate to nekoč vključiti). Zgornji ukaz določa vrata 8787, ki so običajna privzeta nastavitev RStudio.

The -v ustvari glasnost. Se spomnite, ko sem rekel, da so Dockerjevi vsebniki samostojni in izolirani? To pomeni izoliran. Privzeto vsebnik nima dostopa karkoli zunaj njega, preostali del vašega sistema pa ne more dostopati do ničesar znotraj posodo. Če pa nastavite nosilec, lahko lokalno mapo povežete z mapo znotraj vsebnika. Nato se samodejno sinhronizirajo. Sintaksa:

-v pot / do / lokalnega / imenika: / pot / do / vsebnika / imenika

Pri RStudio običajno uporabljate / home / rstudio / ime_novega_imenika za imenik vsebnika.

Na koncu docker run ukaz je ime slike, ki jo želite zagnati. Moja slika je, tako kot številne Dockerjeve slike, shranjena v Docker Hub, storitvi, ki jo je Docker ustanovil za skupno rabo slik. Tako kot pri GitHub tudi do projekta dostopate tako, da določite uporabniško ime / preimenovanje. V tem primeru običajno tudi dodate : the_tag, kar pomaga, če obstajajo različne različice iste slike.

Spodaj je koda, ki jo lahko spremenite za zagon moje slike z R 4.0 in najnovejšo predogledno različico RStudio v vašem sistemu. Nadomestite pot do ene od vaš imeniki za / Users / smachlis / Document / MoreWithR. To lahko zaženete v oknu terminala Mac ali ukaznem pozivu sistema Windows ali oknu PowerShell.

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

Ko prvič zaženete ta ukaz, bo moral Docker sliko prenesti iz Docker Hub, zato lahko traja nekaj časa. Po tem bi moralo biti veliko hitreje, če ne izbrišete lokalne kopije slike.

Zdaj, ko odprete lokalni gostitelj: 8787 v brskalniku bi morali videti RStudio.

Sharon Machlis,

Privzeto uporabniško ime in geslo sta rstudio, kar bi bilo seveda grozno, če bi to izvajali v oblaku. Ampak mislim, da je v mojem lokalnem računalniku v redu, saj ga običajno nimam kaj geslo na mojem običajnem namizju RStudio.

Če preverite različico R v vsebniku R / RStudio, boste videli, da gre za različico 4.0. RStudio mora biti različica 1.3.947, zadnja predogledna različica v času, ko je bil ta članek prvič objavljen To sta različici, ki sta različici nameščeni na mojem lokalnem računalniku.

Tri nove funkcije R 4.0

Poglejmo si zdaj nekaj novih funkcij R 4.0.

Privzeti novi niziAsFactors

V spodnji kodi ustvarjam preprost podatkovni okvir z informacijami o štirih mestih in nato preverjam strukturo.

 Mesto <- c ("New York", "San Francisco", "Boston", "Seattle"), država <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) gostote <- data.frame (City, State, PopDensity) str (gostote) 'data.frame': 4 obs. od 3 spremenljivk: $ Mesto: chr "New York" "San Francisco" "Boston" "Seattle" $ Država: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962 

Ste opazili kaj nepričakovanega? Mesto in država sta niz znakov, čeprav nisem natančno določil stringsAsFactors = FALSE. Da, nazadnje je privzeta nastavitev R data.frame stringsAsFactors = FALSE. Če zaženem isto kodo v starejši različici R, bosta dejavnika mesto in država.

Nove barvne palete in funkcije

Nato si oglejmo novo vgrajeno funkcijo v R 4.0: palette.pals (). Tu je prikazanih nekaj vgrajenih barvnih palet.

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

Še ena nova funkcija, palette.colors (), daje informacije o vgrajeni paleti.

 palette.colors (palette = "Tableau 10") modro oranžna rdeča svetlobelja zeleno rumena vijolična "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" roza rjava svetlo siva " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Če nato zaženete paket tehtnic show_col () na rezultate, dobite lep barvni prikaz palete.

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

Sharon Machlis,

Naredil sem majhno funkcijo, ki je združila obe, kar bi lahko bilo koristno za ogled nekaterih vgrajenih palet v eni vrstici kode:

display_built_in_palette <- funkcija (moja_paleta) {

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

}

display_built_in_palette ("Okabe-Ito")

Sharon Machlis,

Nobena od teh kod ne deluje v prejšnjih različicah R-ja, ker samo tehtnice :: show_col () je na voljo pred R 4.0.

Uhajanje znakov v nizih

Na koncu poglejmo še novo funkcijo, ki olajša vključevanje znakov, ki jih je običajno treba ubežati v nizih.

Sintaksa je r "(moj niz tukaj)". Tu je en primer:

string1 <- r "(" Ni mi treba več ubežati tem "dvojnim narekovajem znotraj narekovaja," so rekli.) "

Ta niz vključuje neizbežni narekovaj znotraj para dvojnih narekovajev. Če prikažem ta niz, dobim to:

 > cat (string1) "Ni mi treba več ubežati tem" dvojnim narekovajem znotraj narekovaja, "so rekli. 

Lahko tudi natisnem dobesedno besedilo \ n znotraj nove funkcije.

 string2 <- r "(tu je poševnica n \ n)" cat (string2) Tu je poševnica n \ n 

Brez posebnega r "()" funkcijo, to \ n se bere kot prelom vrstice in se ne prikaže.

 string3 <- "Tu je poševnica n \ n" mačka (string3) Tu je poševnica n 

Pred tem v osnovnem R ste morali poševnico pobegniti z drugo poševnico.

 string4 <- "Običajno pobegnil \ n" mačka (string4) Običajno pobegnil \ n 

V tem primeru to ni veliko, vendar se lahko zaplete, ko delate na nečem, kot so zapleteni regularni izrazi.

V R 4.0 je še veliko novega. Vse podrobnosti si lahko ogledate na spletni strani projekta R.

Če želite več informacij o uporabi Dockerja z R, si oglejte kratek, a odličen vadnik R Docker ROpenSci Labs.

In za več nasvetov R, pojdite na stran Naredite več z R!

$config[zx-auto] not found$config[zx-overlay] not found