Comment exécuter R 4.0 dans Docker - et 3 nouvelles fonctionnalités intéressantes de R 4.0

Il y a quelques changements et mises à jour intéressants dans la R 4.0. Ici, je vais jeter un oeil à trois d'entre eux. De plus, je vais vous donner des instructions étape par étape sur l'installation de R 4.0 afin qu'il n'interfère pas avec votre installation R existante - en exécutant R avec Docker.

Docker est une plate-forme pour créer des «conteneurs» - des environnements complètement autonomes et isolés sur votre ordinateur. Considérez-les comme un mini système sur votre système. Ils incluent leur propre système d'exploitation, puis tout ce que vous voulez ajouter à cela - logiciels d'application, scripts, données, etc. Les conteneurs sont utiles pour beaucoup de choses, mais ici je me concentrerai sur un seul: tester de nouvelles versions de logiciels sans bousiller votre configuration locale actuelle.

Exécuter R 4.0 et la dernière version préliminaire de RStudio dans un conteneur Docker est assez facile. Si vous ne voulez pas suivre la partie Docker de ce didacticiel, et que vous voulez juste voir les nouveautés de R, faites défiler jusqu'à la section «Trois nouvelles fonctionnalités R 4.0».

Exécuter R 4.0 dans un conteneur Docker

Si vous souhaitez suivre, installez Docker de bureau sur votre système si vous ne l'avez pas déjà: rendez-vous sur //www.docker.com/products/docker-desktop et téléchargez la bonne version de bureau pour votre ordinateur (Windows, Mac ou Linux). Ensuite, lancez-le. Vous devriez voir une icône Docker baleine s'exécuter quelque part sur votre système.

Sharon Machlis,

Ensuite, nous avons besoin d'une image Docker pour R 4.0. Vous pouvez considérer une image Docker comme un ensemble d'instructions pour créer un conteneur avec un logiciel spécifique inclus. Merci à Adelmo Filho (un data scientist au Brésil) et au projet Rocker R Docker, qui fournissent des images Docker très utiles. J'ai légèrement modifié leurs images Docker pour créer celle que j'ai utilisée dans ce tutoriel.

Voici la syntaxe pour exécuter une image Docker sur votre propre système pour créer un conteneur.

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

dockerest la façon dont vous devez démarrer toute commande Docker. runsignifie que je veux exécuter une image et créer un conteneur à partir de cette image. Le --rmdrapeau signifie retirer le conteneur une fois terminé. Vous n'êtes pas obligé d'inclure --rm; mais si vous exécutez beaucoup de conteneurs et ne les supprimez pas, ils commenceront à occuper beaucoup d'espace disque. Le -p 8787:8787n'est nécessaire que pour les images qui doivent s'exécuter sur un port système, ce que RStudio fait (tout comme Shiny si vous prévoyez de l'inclure un jour). La commande ci-dessus spécifie le port 8787, qui est la valeur par défaut habituelle de RStudio.

Le -vcrée un volume. Vous vous souvenez quand j'ai dit que les conteneurs Docker sont autonomes et isolés? Cela signifie isolé . Par défaut, le conteneur ne peut accéder à rien en dehors de celui-ci et le reste de votre système ne peut accéder à rien à l' intérieur du conteneur. Mais si vous configurez un volume, vous pouvez lier un dossier local à un dossier à l'intérieur du conteneur. Ensuite, ils se synchronisent automatiquement. La syntaxe:

-v chemin / vers / local / répertoire: / chemin / vers / conteneur / répertoire

Avec RStudio, vous utilisez généralement /home/rstudio/name_of_new_directorypour le répertoire conteneur.

À la fin de la docker runcommande se trouve le nom de l'image que vous souhaitez exécuter. Mon image, comme de nombreuses images Docker, est stockée sur Docker Hub, un service mis en place par Docker pour partager des images. Comme avec GitHub, vous accédez à un projet en spécifiant un fichier username/reponame. Dans ce cas, vous ajoutez également généralement :the_tag, ce qui aide s'il existe différentes versions de la même image.

Vous trouverez ci-dessous le code que vous pouvez modifier pour exécuter mon image avec R 4.0 et la dernière version préliminaire de RStudio sur votre système. Assurez-vous de remplacer un chemin vers l'un de vos répertoires par / Users / smachlis / Document / MoreWithR.  Vous pouvez l'exécuter dans une fenêtre de terminal Mac ou une invite de commande Windows ou une fenêtre PowerShell.

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

Lorsque vous exécutez cette commande pour la première fois, Docker devra télécharger l'image à partir de Docker Hub, cela peut donc prendre un certain temps. Après cela, à moins que vous ne supprimiez votre copie locale de l'image, cela devrait être beaucoup plus rapide.

Maintenant, lorsque vous ouvrez localhost:8787dans un navigateur, vous devriez voir RStudio.

Sharon Machlis,

Le nom d'utilisateur et le mot de passe par défaut sont tous deux rstudio, ce qui serait bien sûr terrible si vous l'exécutiez dans le cloud. Mais je pense que c'est bien sur ma machine locale, car je n'ai normalement pas de mot de passe sur mon bureau RStudio habituel.

Si vous vérifiez la version R dans votre R / RStudio conteneurisé, vous verrez qu'il s'agit de la version 4.0. RStudio doit être la version 1.3.947, la dernière version préliminaire au moment de la première publication de cet article. Ce sont deux versions différentes de celles installées sur ma machine locale.

Trois nouvelles fonctionnalités R 4.0

Examinons maintenant quelques nouvelles fonctionnalités de R 4.0. 

Nouvelles chaînes AsFactors par défaut

Dans le code ci-dessous, je crée un cadre de données simple avec des informations sur quatre villes, puis je vérifie la structure.

Ville <- c ("New York", "San Francisco", "Boston", "Seattle") État <- c ("NY", "CA", "MA", "Seattle") PopDensity <- c (26403 , 18838, 13841, 7962) densités <- data.frame (ville, état, densité de population) str (densités) 'data.frame': 4 obs. de 3 variables: $ Ville: chr "New York" "San Francisco" "Boston" "Seattle" $ État: chr "NY" "CA" "MA" "Seattle" $ PopDensity: num 26403 18838 13841 7962

Avez-vous remarqué quelque chose d'inattendu? Ville et État sont des chaînes de caractères, même si je n'ai pas spécifié stringsAsFactors = FALSE.Oui, enfin, la valeur par défaut de R data.frame est stringsAsFactors = FALSE. Si j'exécute le même code dans une ancienne version de R, la ville et l'état seront des facteurs.

Nouvelles palettes de couleurs et fonctions

Ensuite, le regard let à une nouvelle fonction intégrée dans la R 4.0: palette.pals(). Cela montre quelques palettes de couleurs intégrées.

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

Une autre nouvelle fonction palette.colors(),, donne des informations sur une palette intégrée.

 palette.colors (palette = "Tableau 10") bleu orange rouge clair vert jaune violet "# 4E79A7" "# F28E2B" "# E15759" "# 76B7B2" "# 59A14F" "# EDC948" "# B07AA1" rose brun clair gris " # FF9DA7 "" # 9C755F "" # BAB0AC " 

Si vous exécutez ensuite la fonction du package show_col()scale sur les résultats, vous obtenez un bel affichage des couleurs de la palette.

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

Sharon Machlis,

J'ai créé une petite fonction combinant les deux qui pourrait être utile pour regarder certaines des palettes intégrées dans une seule ligne de code:

display_built_in_palette <- function (ma_palette) {

échelles :: show_col (palette.colors (palette = ma_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 

Sans la r"()"fonction spéciale , cela \nest lu comme un saut de ligne et ne s'affiche pas.

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

Avant cela, dans la base R, vous deviez échapper cette barre oblique inverse avec une deuxième barre oblique inverse. 

 string4 <- "Habituellement échappé \\ n" cat (string4) Habituellement échappé \ n 

Ce n'est pas un gros problème dans cet exemple, mais cela peut devenir compliqué lorsque vous travaillez sur quelque chose comme des expressions régulières complexes.

Il y a beaucoup plus de nouveautés dans la R 4.0. Vous pouvez consulter tous les détails sur le site Web du projet R. 

Pour plus d'informations sur l'utilisation de Docker avec R, consultez le court mais excellent tutoriel R Docker de rOpenSci Labs.

Et pour plus de conseils R, rendez-vous sur la page Faire plus avec R!