Accéder au contenu principal

Jupyter et R Markdown : Cahiers avec R

Apprenez à installer, exécuter et utiliser R avec Jupyter Notebook et RStudio's R Notebook, y compris des conseils et des alternatives.
Actualisé 14 nov. 2024  · 20 min de lecture

Lorsque vous travaillez sur des problèmes de science des données, vous pouvez souhaiter mettre en place un environnement interactif pour travailler et partager votre code pour un projet avec d'autres personnes. Vous pouvez facilement mettre en place ce système à l'aide d'un cahier. 

Dans d'autres cas, vous souhaiterez simplement communiquer sur le flux de travail et les résultats que vous avez recueillis pour l'analyse de votre problème de science des données. Pour un rapport transparent et reproductible, un carnet de notes peut également s'avérer utile.

En effet, les ordinateurs portables sont parfaits pour les situations où vous souhaitez combiner du texte simple avec des éléments de texte enrichis tels que des graphiques, des calculs, etc.

Ce tutoriel couvre les sujets suivants :

R et Jupyter Notebook


Contrairement à ce que l'on pourrait penser, Python ne vous limite pas à travailler uniquement avec Python : l'application notebook est agnostique en termes de langage, ce qui signifie que vous pouvez également travailler avec d'autres langages. 

Il existe deux façons générales de commencer à utiliser R avec Jupyter : en utilisant un noyau ou en mettant en place un environnement R qui dispose de tous les outils essentiels pour commencer à faire de la science des données.

Exécuter R dans Jupyter avec le noyau R

Comme décrit ci-dessus, la première façon d'exécuter R est d'utiliser un noyau. Si vous souhaitez obtenir une liste complète de tous les noyaux disponibles dans Jupyter, cliquez ici.

Pour travailler avec R, vous devez charger l'IRKernel et l'activer pour commencer à travailler avec R dans l'environnement notebook.

Tout d'abord, vous devez installer quelques paquets. Assurez-vous de ne pas le faire dans votre console RStudio, mais dans un terminal R normal, sinon vous obtiendrez une erreur comme celle-ci :

Error in IRkernel::installspec() :
Jupyter or IPython 3.0 has to be installed but could neither run “jupyter” nor “ipython”, “ipython2” or “ipython3”.
(Note that “ipython2” is just IPython for Python 2, but still may be IPython 3.0)
$ R

> install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))

Cette commande vous demandera de saisir un nombre pour sélectionner un miroir CRAN afin d'installer les paquets nécessaires. Entrez un numéro et l'installation se poursuivra.

> devtools::install_github('IRkernel/IRkernel')

Ensuite, vous devez encore rendre le noyau R visible pour Jupyter :

# Install IRKernel for the current user

> IRkernel::installspec()

# Or install IRKernel system-wide

> IRkernel::installspec(user = FALSE)

Ouvrez maintenant l'application notebook à l'aide de jupyter notebook. Vous verrez R apparaître dans la liste des noyaux lorsque vous créerez un nouveau carnet. 

Utiliser un environnement R Essentials dans Jupyter

La deuxième option pour travailler rapidement avec R est d'installer les éléments essentiels de R dans votre environnement actuel :

conda install -c r r-essentials

Ces "essentiels" comprennent les paquets dplyr, shiny, ggplot2, tidyr, caret et nnet. Si vous ne souhaitez pas installer les éléments essentiels dans votre environnement actuel, vous pouvez utiliser la commande suivante pour créer un nouvel environnement réservé aux éléments essentiels de R :

conda create -n my-r-env -c r r-essentials

Ouvrez maintenant l'application notebook pour commencer à travailler avec R.

Vous vous demandez peut-être ce que vous devez faire si vous souhaitez installer des paquets supplémentaires pour élaborer votre projet de science des données. Après tout, ces paquets peuvent suffire à vous faire démarrer, mais vous pourriez avoir besoin d'autres outils.

Vous pouvez soit construire un paquet Conda R en exécutant, par exemple :

conda skeleton cran ldavis conda build r-ldavis/

Vous pouvez également installer le paquet à partir de R via install.packages() ou devtools::install_github (pour installer des paquets à partir de GitHub). Vous devez simplement vous assurer d'ajouter le nouveau paquet à la bonne bibliothèque R utilisée par Jupyter :

install.packages("ldavis", "/home/user/anaconda3/lib/R/library")

Si vous souhaitez en savoir plus sur les noyaux ou sur l'exécution de R dans un environnement Docker, consultez cette page.

Ajouter un peu de magie R à Jupyter

L'un des grands avantages du travail sur ordinateur portable est qu'il vous offre un environnement interactif. Cette interactivité provient principalement des "commandes magiques".

Ces commandes vous permettent de passer de Python à des instructions en ligne de commande ou d'écrire du code dans un autre langage tel que R, Julia, Scala, ....

Pour passer de Python à R, vous devez d'abord télécharger le paquetage suivant :

%load_ext rpy2.ipython

Après cela, vous pouvez vous initier à R, ou vous pouvez facilement passer de Python à R dans votre analyse de données avec la commande magique %R.

Démontrons comment la magie de R fonctionne à l'aide d'un petit exemple :

# Hide warnings if there are any
import warnings
warnings.filterwarnings('ignore')
# Load in the r magic
%load_ext rpy2.ipython
# We need ggplot2
%R require(ggplot2)
# Load in the pandas library
import pandas as pd 
# Make a pandas DataFrame
df = pd.DataFrame({'Alphabet': ['a', 'b', 'c', 'd','e', 'f', 'g', 'h','i'],
                   'A': [4, 3, 5, 2, 1, 7, 7, 5, 9],
                   'B': [0, 4, 3, 6, 7, 10,11, 9, 13],
                   'C': [1, 2, 3, 1, 2, 3, 1, 2, 3]})
# Take the name of input variable df and assign it to an R variable of the same name
%%R -i df
# Plot the DataFrame df
ggplot(data=df) + geom_point(aes(x=A, y=B, color=C))

Si vous voulez plus de détails sur Jupyter, sur la façon de configurer un notebook, où télécharger l'application, comment vous pouvez exécuter l'application notebook (via Docker, pip install ou avec la distribution Anaconda) ou d'autres détails, consultez notre Guide définitif.

Le carnet R


Jusqu'à récemment, Jupyter semble avoir été une solution populaire pour les utilisateurs de R, à côté de carnets tels que Apache Zeppelin ou Beaker.

De plus, d'autres alternatives pour rapporter les résultats d'analyses de données, telles que R Markdown, Knitr ou Sweave, ont été extrêmement populaires dans la communauté R.

Cependant, cela pourrait changer avec la récente publication du R ou R Markdown Notebook par RStudio.

Vous le voyez : le contexte du R Markdown Notebook est complexe, et il vaut la peine de se pencher sur l'histoire de la recherche reproductible en R pour comprendre ce qui a motivé la création et le développement de ce carnet. En fin de compte, vous vous rendrez compte que ce carnet est différent des autres. 

R et l'histoire de la recherche reproductible

Dans son exposé, J.J. Allaire confirme que les efforts de R lui-même pour la recherche reproductible, les efforts d'Emacs pour combiner le code texte et la saisie, les projets Pandoc, Markdown et knitr, et les carnets de calcul évoluent en parallèle et s'influencent les uns les autres depuis de nombreuses années. Il confirme que tous ces facteurs ont finalement conduit à la création et au développement d'ordinateurs portables pour la R.

Tout d'abord, les ordinateurs portables de calcul ont une longue histoire : depuis la fin des années 80, lorsque l'interface de Mathematica a été publiée, de nombreux progrès ont été réalisés. En 2001, Fernando Pérez a commencé à développer IPython, mais ce n'est qu'en 2011 que l'équipe a publié la version 0.12 d'IPython. Le projet SageMath a été lancé en 2004. Par la suite, il y a eu de nombreux carnets. Les plus remarquables pour la communauté de la science des données sont Beaker (2013), Jupyter (2014) et Apache Zeppelin (2015). 

Il y a aussi les langages de balisage et les éditeurs de texte qui ont influencé la création de l'application notebook de RStudio, à savoir Emacs, Markdown et Pandoc. Org-mode a été publié en 2003. Il s'agit d'un mode d'édition et d'organisation pour les notes, la planification et la rédaction dans l'éditeur de texte libre Emacs. Six ans plus tard, Emacs org-R était là pour fournir un support aux utilisateurs de R. Markdown, quant à lui, a été lancé en 2004 en tant que langage de balisage qui vous permet de formater votre texte brut de manière à ce qu'il puisse être converti en HTML ou dans d'autres formats. Quelques années plus tard, Pandoc est sorti. Il s'agit d'un outil de rédaction et d'une base pour les flux de travail de publication.

Enfin, les efforts de la communauté R pour assurer la reproductibilité et la transparence de la recherche ont également contribué à l'essor d'un notebook pour R. 2002, Sweave a été introduit en 2002 pour permettre l'intégration de code R dans des documents LaTeX afin de générer des fichiers PDF. Ces fichiers pdf combinent le récit et l'analyse, les graphiques, le code et les résultats des calculs. Dix ans plus tard, knitr a été développé pour résoudre des problèmes de longue date dans Sweave et pour combiner des fonctionnalités présentes dans d'autres logiciels complémentaires en un seul logiciel. Il s'agit d'un moteur transparent pour la génération de rapports dynamiques en R. Knitr permet l'utilisation de n'importe quel langage d'entrée et de n'importe quel langage de balisage en sortie.

En 2012 également, R Markdown a été créé comme une variante de Markdown qui peut intégrer des morceaux de code R et qui peut être utilisé avec knitr pour créer des rapports reproductibles basés sur le web. Le grand avantage était et est toujours qu'il n'est plus nécessaire d'utiliser LaTex, dont l'apprentissage et l'utilisation nécessitent une courbe d'apprentissage. La syntaxe de R Markdown est très similaire à la syntaxe Markdown normale, mais elle comporte quelques modifications, car vous pouvez inclure, par exemple, des équations LaTex.

R Markdown contre les carnets de calcul

R Markdown est probablement l'une des options les plus populaires dans la communauté R pour rendre compte des analyses de données. Il n'est donc pas surprenant qu'il soit toujours un composant essentiel du R Markdown Notebook. 

R Markdown et les carnets de notes ont des points communs, comme la fourniture d'un flux de travail reproductible, le tissage du code, des résultats et du texte dans un seul document, la prise en charge des widgets interactifs et la sortie vers de multiples formats. Toutefois, ils diffèrent dans leurs priorités : R Markdown se concentre sur l'exécution reproductible par lots, la représentation en texte clair, le contrôle de version, la production et offre le même éditeur et les mêmes outils que ceux que vous utilisez pour les scripts R.

D'autre part, les cahiers de calcul traditionnels se concentrent sur la sortie en ligne avec le code, la mise en cache de la sortie à travers les sessions, le partage du code et la sortie dans un seul fichier. Les ordinateurs portables mettent l'accent sur un modèle d'exécution interactif. Ils n'utilisent pas une représentation en texte brut, mais une représentation structurée des données, telle que JSON.

Cela explique l'objectif de l'application notebook de RStudio : elle combine tous les avantages de R Markdown avec les bonnes choses que les notebooks computationnels ont à offrir.

C'est pourquoi R Markdown est un composant essentiel du R Markdown Notebook : RStudio définit son bloc-notes comme "un document R Markdown avec des morceaux qui peuvent être exécutés indépendamment et interactivement, avec une sortie visible immédiatement sous l'entrée".

Comment travailler avec les carnets de notes R


Si vous avez déjà travaillé avec Jupyter ou tout autre bloc-notes informatique, vous constaterez que le flux de travail est très similaire. Une chose qui peut sembler très différente est le fait que vous ne travaillez plus avec des cellules de code par défaut : vous travaillez plutôt avec une sorte d'éditeur de texte dans lequel vous indiquez vos morceaux de code avec R Markdown.

Comment installer et utiliser le carnet de notes R Markdown

La première condition pour utiliser l'ordinateur portable est de disposer de la dernière version de RStudio sur votre PC. Les carnets étant une nouvelle fonctionnalité de RStudio, ils ne sont disponibles qu'à partir de la version 1.0 de RStudio. Il est donc important de vérifier si la version installée est correcte.

Si vous ne disposez pas de la version 1.0 ou supérieure de RStudio, vous pouvez télécharger la dernière version ici.

Ensuite, pour créer un nouveau carnet, vous allez dans l'onglet Fichier, sélectionnez "Nouveau fichier", et vous verrez l'option de créer un nouveau carnet R Markdown. Si RStudio vous invite à mettre à jour certains paquets, acceptez l'offre et un nouveau fichier apparaîtra.

Conseil: vérifiez si vous travaillez avec un carnet en regardant le haut de votre document. Le résultat devrait être html_notebook.

Vous constaterez que le texte par défaut qui apparaît dans le document est en R Markdown. R Markdown devrait vous être assez familier, mais si vous ne le maîtrisez pas encore, vous pouvez toujours consulter notre cours Reporting With R Markdown ou parcourir le matériel fourni par RStudio.

Comparez Jupyter avec R Markdown

Notez que vous pouvez toujours utiliser l'icône d'engrenage pour ajuster l'espace de travail du notebook : vous avez la possibilité d'étendre, de réduire et de supprimer la sortie de votre code, de changer les options de prévisualisation et de modifier les options de sortie.

Cette dernière option peut s'avérer utile si vous souhaitez modifier la coloration syntaxique, appliquer un autre thème, ajuster la largeur et la hauteur par défaut des chiffres apparaissant dans votre résultat, etc.

A partir de là, vous pouvez commencer à insérer des morceaux de code et du texte !

Vous pouvez ajouter des morceaux de code de deux manières : par le raccourci clavier Ctrl + Alt + I ou Cmd + Option + I, ou par le bouton d'insertion qui se trouve dans la barre d'outils. 

L'avantage de travailler avec ces carnets R Markdown est que vous pouvez suivre l'exécution de vos morceaux de code, grâce à la petite barre verte qui apparaît à gauche lorsque vous exécutez de gros morceaux de code ou plusieurs morceaux de code à la fois. Notez également la présence d'une barre de progression en bas de page.

Vous pouvez voir la barre de progression verte apparaître dans l'image ci-dessous :

Utilisation du carnet de notes R

En ce qui concerne l'exécution du code, il existe plusieurs façons d'exécuter vos morceaux de code R.

Vous pouvez exécuter un morceau de code ou le morceau suivant, exécuter tous les morceaux de code inférieurs et supérieurs ; mais vous pouvez également choisir de redémarrer R et d'exécuter tous les morceaux ou de redémarrer et d'effacer la sortie.

Notez que lorsque vous exécutez le code du notebook, vous verrez également la sortie apparaître sur votre console ! Cela peut être une différence assez importante pour ceux qui travaillent habituellement avec d'autres carnets de calcul tels que Jupyter.

En cas d'erreur lors de l'exécution des morceaux de code du bloc-notes, l'exécution s'arrête et une barre rouge apparaît à côté du morceau de code à l'origine de l'erreur.

Vous pouvez supprimer l'arrêt de l'exécution en ajoutant errors = TRUE dans les options du chunk, comme ceci :

```{r, error=TRUE}
iris <- read.csv(url("http://mlr.cs.umass.edu/ml/machine-leaning-databases"), header = FALSE)
names(iris) <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species")
```

Notez que l'erreur apparaîtra toujours, mais que l'exécution du code de l'ordinateur portable ne sera pas interrompue !

Comment utiliser la magie du carnet de notes R Markdown

Tout comme avec Jupyter, vous pouvez également travailler de manière interactive avec vos carnets R Markdown. Il fonctionne un peu différemment de Jupyter, car il n'y a pas de véritables commandes magiques ; Pour travailler avec d'autres langages, vous devez ajouter des morceaux séparés de Bash, Stan, Python, SQL ou Rcpp au carnet de notes. 

Ces options peuvent vous sembler assez limitées, mais elles sont compensées par la facilité avec laquelle vous pouvez ajouter ces types de morceaux de code à l'aide du bouton d'insertion de la barre d'outils.

Il est également facile de travailler avec ces morceaux de code : vous pouvez voir un exemple de morceaux SQL dans ce document, publié par J.J Allaire. Pour les commandes Bash, il suffit de taper la commande. Il n'y a pas besoin de caractères supplémentaires tels que '!' pour signaler que vous travaillez en Bash, comme vous le feriez lorsque vous travaillez avec Jupyter. 

Comment produire vos carnets de notes R Markdown 

Avant de rendre la version finale d'un carnet, vous pouvez prévisualiser ce que vous avez fait. Il existe une fonction pratique qui vous permet de le faire : vous la trouverez dans votre barre d'outils. 

Cliquez sur le bouton "aperçu" et la version provisoire de votre document apparaîtra sur le côté droit, dans l'onglet "Visionneuse".

En ajoutant quelques lignes à la première section en haut du carnet, vous pouvez ajuster vos options de sortie, comme ceci :

---
title: "Notebook with KNN Example"
output:
  pdf_document:
    highlight: tango
    toc: yes
  html_notebook:
    toc: yes
---

Pour savoir où vous pouvez obtenir ces distributions, vous pouvez simplement essayer de tricoter, et la sortie de la console vous donnera les sites où vous pouvez télécharger les paquets nécessaires. 

Notez qu'il ne s'agit que de l'une des nombreuses options dont vous disposez pour exporter un carnet : il est également possible de rendre des documents GitHub, des documents Word, des présentations beamer, etc. Il s'agit des options de sortie que vous aviez déjà avec les fichiers R Markdown ordinaires. Vous trouverez plus d'informations ici. 

Trucs et astuces pour travailler avec R Notebook


Outre les pratiques générales de codage que vous devez garder à l'esprit, telles que la documentation de votre code et l'application d'un schéma de dénomination cohérent, le regroupement des codes et la longueur des noms, vous pouvez également utiliser les conseils suivants pour rendre un carnet de notes agréable à utiliser et à lire par d'autres :

  • Comme pour les carnets de calcul, il peut être utile de diviser en plusieurs morceaux les gros morceaux de code ou les morceaux de code qui génèrent plus d'un résultat. Vous améliorerez ainsi l'expérience générale de l'utilisateur et augmenterez la transparence d'un carnet.
  • Utilisez les raccourcis clavier pour accélérer votre travail. Vous trouverez la plupart d'entre eux dans la barre d'outils, à côté des commandes que vous souhaitez exécuter. 
  • Utilisez le correcteur orthographique de la barre d'outils pour vous assurer que le vocabulaire de votre rapport est correct. 
  • Tirez parti de l'option permettant de masquer votre code si votre carnet de notes contient beaucoup de code. Vous pouvez le faire par l'intermédiaire des options du bloc de code ou dans le fichier HTML du carnet lui-même !

Le Notebook R versus le Notebook Jupyter


Outre les différences entre les carnets Jupyter et R Markdown que vous avez déjà lues ci-dessus, il y a d'autres choses.

Comparons Jupyter avec le R Markdown Notebook !

Il y a quatre aspects qu'il est intéressant de considérer : le partage du carnet de notes, l'exécution du code, le contrôle de la version et la gestion du projet.

Partage du carnet de notes

Le code source d'un carnet R Markdown est un fichier .Rmd. Mais lorsque vous enregistrez un carnet, un fichier .nb.html est créé en parallèle. Ce fichier HTML est un fichier associé qui comprend une copie du code source R Markdown et le résultat généré. 

Cela signifie que vous n'avez pas besoin d'un visualiseur spécial pour voir le fichier, alors que vous pourriez en avoir besoin pour voir les carnets de notes créés avec l'application Jupyter, qui sont de simples documents JSON, ou d'autres carnets de notes de calcul qui ont des sorties de format structuré. Vous pouvez publier votre carnet R Markdown sur n'importe quel serveur web, GitHub ou en tant que pièce jointe à un courriel.

Il existe également des API pour rendre et analyser les carnets R Markdown : cela permet à d'autres outils frontaux de créer des modes de création de carnets pour R Markdown. Les API peuvent également être utilisées pour créer des utilitaires de conversion vers et à partir de différents formats de carnets.

Pour partager les carnets que vous créez dans l'application Jupyter, vous pouvez les exporter sous forme de diaporamas, de blogs, de tableaux de bord, etc. Vous trouverez plus d'informations dans ce tutoriel. Cependant, il existe également les options par défaut pour générer des scripts Python, des fichiers HTML, des fichiers Markdown, des fichiers PDF ou des fichiers de texte reStructuré.

Exécution du code

Les carnets de notes R Markdown ont des options pour exécuter un morceau de code ou exécuter le morceau suivant, exécuter tous les morceaux de code inférieurs et supérieurs ; En plus de ces options, vous pouvez également choisir de redémarrer R et d'exécuter tous les morceaux ou de redémarrer et d'effacer la sortie.

Ces options sont intéressantes lorsque vous travaillez avec R, car le R Markdown Notebook permet à tous les éléments de code R de partager le même environnement. Toutefois, cela peut s'avérer un énorme inconvénient si vous travaillez avec des éléments de code non R, car ceux-ci ne partagent pas d'environnement.

Dans l'ensemble, ces options d'exécution de code ajoutent une quantité considérable de flexibilité pour les utilisateurs qui se sont débattus avec les options d'exécution de code offertes par Jupyter, même si celles-ci ne sont pas très différentes : dans l'application Jupyter, vous avez la possibilité d'exécuter une seule cellule, d'exécuter des cellules et d'exécuter toutes les cellules. Vous pouvez également choisir d'effacer la sortie actuelle ou toutes les sorties. L'environnement de code est partagé entre les cellules de code.

Contrôle des versions

D'aucuns ont affirmé que Jupyter perturbait le contrôle de version des carnets de notes ou qu'il était difficile d'utiliser git avec ces carnets. Les solutions à ce problème consistent à exporter le carnet de notes sous forme de script ou à mettre en place un filtre pour corriger les parties des métadonnées qui ne doivent pas changer lorsque vous effectuez un commit ou pour supprimer le nombre d'exécutions et la sortie.

Les carnets R Markdown semblent rendre ce problème un peu plus facile à gérer, car ils ont des fichiers HTML associés qui sauvegardent la sortie de votre code et le fait que les fichiers des carnets sont essentiellement des fichiers de texte brut, le contrôle de la version sera beaucoup plus facile. Vous pouvez choisir de ne placer que le fichier .Rmd sur GitHub ou sur votre autre système de gestion des versions, ou vous pouvez également inclure le fichier .nb.html .

Gestion de projet

Comme le R Markdown Notebook fait partie intégrante du kit de développement RStudio, les carnets s'intègrent de manière transparente à vos projets R. Ces carnets prennent également en charge d'autres langages, notamment Python, C et SQL.

D'autre part, le projet Jupyter n'est pas natif d'un kit de développement : en ce sens, l'intégration de ce bloc-notes dans vos projets nécessitera un certain effort. Mais ce carnet supporte encore plus de langages et sera un compagnon plus approprié pour vous si vous cherchez à utiliser Scala, Apache Toree, Julia, ou un autre langage. 

Alternatives à Jupyter ou R Markdown Notebooks


Outre les carnets de notes que vous pouvez utiliser comme environnements interactifs pour la science des données et qui vous permettent de partager facilement votre code avec vos collègues, vos pairs et vos amis, il existe d'autres alternatives à prendre en compte.

Car parfois, vous n'avez pas besoin d'un cahier, mais d'un tableau de bord, d'une plateforme d'apprentissage interactive ou d'un livre, par exemple.

Vous avez déjà pris connaissance d'options telles que Sweave et Knitr dans la deuxième section. Il existe d'autres options :

  • Même si cet article de blog a couvert R Markdown dans une certaine mesure, vous devez savoir que vous pouvez faire beaucoup plus avec. Par exemple, vous pouvez créer des tableaux de bord avec flexdashboard.
  • Vous pouvez également utiliser Bookdown pour publier rapidement des livres HTML, PDF, ePub et Kindle avec R Markdown. 
  • Shiny est un outil que vous pouvez également utiliser pour créer des tableaux de bord. Pour commencer à utiliser Shiny, rendez-vous sur cette page.
  • Dans un cadre éducatif, DataCamp Light peut également s'avérer utile pour créer des tutoriels interactifs sur votre blog ou votre site web. Si vous voulez voir DataCamp light à l'œuvre, allez voir ce tutoriel, par exemple.
Sujets