Come eseguire R 4.0 in Docker e 3 nuove fantastiche funzionalità di R 4.0

Ci sono alcune modifiche e aggiornamenti interessanti nella R 4.0. Qui ne darò uno sguardo a tre di loro. Inoltre ti fornirò istruzioni dettagliate sull'installazione di R 4.0 in modo che non interferisca con l'installazione di R esistente, eseguendo R con Docker.

Docker è una piattaforma per la creazione di "contenitori": ambienti isolati e completamente autonomi sul computer. Pensa a loro come un mini sistema sul tuo sistema. Includono il proprio sistema operativo e quindi tutto ciò che si desidera aggiungere a questo: software applicativo, script, dati, ecc. I contenitori sono utili per molte cose, ma qui mi concentrerò solo su una: testare nuove versioni del software senza rovinare la tua attuale configurazione locale.

Eseguire R 4.0 e l'ultima versione di anteprima di RStudio in un contenitore Docker è piuttosto semplice. Se non vuoi seguire la parte Docker di questo tutorial e vuoi solo vedere cosa c'è di nuovo in R, scorri verso il basso fino alla sezione "Tre nuove funzionalità di R 4.0".

Esegui R 4.0 in un contenitore Docker

Se si desidera desidera seguire, l'installazione del desktop Docker sul vostro sistema, se non lo avete già: Testa a //www.docker.com/products/docker-desktop e scaricare la versione desktop giusta per il computer (Windows, Mac o Linux). Quindi, avvialo. Dovresti vedere un'icona Docker balena in esecuzione da qualche parte sul tuo sistema.

Sharon Machlis,

Successivamente, abbiamo bisogno di un'immagine Docker per R 4.0. Puoi pensare a un'immagine Docker come a una serie di istruzioni per creare un contenitore con software specifico incluso. Grazie ad Adelmo Filho (un data scientist in Brasile) e al progetto Rocker R Docker, che forniscono alcune immagini Docker molto utili. Ho modificato leggermente le loro immagini Docker per creare quella che ho usato in questo tutorial.

Ecco la sintassi per eseguire un'immagine Docker sul tuo sistema per creare un contenitore.

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

dockerè il modo in cui devi avviare qualsiasi comando Docker. runsignifica che voglio eseguire un'immagine e creare un contenitore da quell'immagine. La --rmbandiera significa rimuovere il contenitore quando è finito. Non dovete includere --rm; ma se esegui molti contenitori e non li elimini, inizieranno a occupare molto spazio su disco. È -p 8787:8787necessario solo per le immagini che devono essere eseguite su una porta di sistema, cosa che RStudio fa (così come Shiny se si prevede di includerla un giorno). Il comando sopra specifica la porta 8787, che è il solito valore predefinito di RStudio.

Il -vcrea un volume. Ricordi quando ho detto che i container Docker sono autonomi e isolati? Ciò significa isolato . Per impostazione predefinita, il contenitore non può accedere a nulla al di fuori di esso e il resto del sistema non può accedere a nulla all'interno del contenitore. Ma se imposti un volume, puoi collegare una cartella locale a una cartella all'interno del contenitore. Quindi si sincronizzano automaticamente. La sintassi:

-v percorso / in / local / directory: / percorso / in / container / directory

Con RStudio, di solito usi /home/rstudio/name_of_new_directoryper la directory del contenitore.

Alla fine del docker runcomando c'è il nome dell'immagine che vuoi eseguire. La mia immagine, come molte immagini Docker, è archiviata su Docker Hub, un servizio impostato da Docker per la condivisione delle immagini. Come con GitHub, accedi a un progetto specificando un file username/reponame. In questo caso di solito aggiungi anche :the_tag, il che aiuta se ci sono diverse versioni della stessa immagine.

Di seguito è riportato il codice che puoi modificare per eseguire la mia immagine con R 4.0 e l'ultima versione di anteprima di RStudio sul tuo sistema. Assicurati di sostituire un percorso a una delle tue directory per / Users / smachlis / Document / MoreWithR.  Puoi eseguirlo in una finestra del terminale Mac o nel prompt dei comandi di Windows o nella finestra di PowerShell.

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

Quando esegui questo comando per la prima volta, Docker dovrà scaricare l'immagine da Docker Hub, quindi potrebbe volerci del tempo. Dopodiché, a meno che non elimini la tua copia locale dell'immagine, dovrebbe essere molto più veloce.

Ora, quando apri localhost:8787in un browser, dovresti vedere RStudio.

Sharon Machlis,

Il nome utente e la password predefiniti sono entrambi rstudio, il che ovviamente sarebbe terribile se lo eseguissi nel cloud. Ma penso che vada bene sulla mia macchina locale, dal momento che normalmente non ho alcuna password sul mio normale desktop RStudio.

Se controlli la versione R nel tuo R / RStudio containerizzato, vedrai che è la versione 4.0. RStudio dovrebbe essere la versione 1.3.947, l'ultima versione di anteprima al momento della prima pubblicazione di questo articolo. Queste sono entrambe versioni diverse da quelle installate sulla mia macchina locale.

Tre nuove funzionalità della R 4.0

Quindi ora diamo un'occhiata ad alcune nuove funzionalità di R 4.0. 

Nuovo valore predefinito di stringsAsFactors

Nel codice seguente, creo un semplice data frame con informazioni su quattro città e quindi controllo la struttura.

Città <- c ("New York", "San Francisco", "Boston", "Seattle") Stato <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) densità <- data.frame (Città, Stato, PopDensity) str (densità) 'data.frame': 4 obs. di 3 variabili: $ Città: chr "New York" "San Francisco" "Boston" "Seattle" $ Stato: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962

Hai notato qualcosa di inaspettato? Città e Stato sono stringhe di caratteri, anche se non ho specificato stringsAsFactors = FALSE.Sì, alla fine il valore predefinito di R data.frame è stringsAsFactors = FALSE. Se eseguo lo stesso codice in una versione precedente di R, città e stato saranno fattori.

Nuove tavolozze di colori e funzioni

Avanti, Guardiamo una nuova funzione integrata in R 4.0: palette.pals(). Questo mostra alcune tavolozze di colori incorporate.

 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" 

Un'altra nuova funzione palette.colors(),, fornisce informazioni su una tavolozza incorporata.

 palette.colors (palette = "Tableau 10") blu arancione rosso verde chiaro verde giallo viola "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" rosa marrone grigio chiaro " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Se poi esegui la show_col()funzione del pacchetto scale sui risultati, ottieni una bella visualizzazione a colori della tavolozza.

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

Sharon Machlis,

Ho creato una piccola funzione combinando i due che potrebbe essere utile per guardare alcune delle tavolozze integrate in una singola riga di codice:

display_built_in_palette <- function (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 

Senza la r"()"funzione speciale , \nviene letta come un'interruzione di riga e non viene visualizzata.

 string3 <- "Ecco un backslash n \ n" cat (string3) Ecco un backslash n 

Prima di questo in base R, era necessario sfuggire a quella barra rovesciata con una seconda barra rovesciata. 

 string4 <- "Usual escaped \\ n" cat (string4) Usual escaped \ n 

Non è un grosso problema in questo esempio, ma può complicarsi quando lavori su qualcosa come espressioni regolari complesse.

Ci sono molte altre novità nella R 4.0. Puoi controllare tutti i dettagli sul sito web del progetto R. 

Per ulteriori informazioni sull'utilizzo di Docker con R, dai un'occhiata al breve ma eccellente R Docker Tutorial di rOpenSci Labs.

E per altri suggerimenti R, vai alla pagina Fai di più con R!