Réaliser des analyses de données reproductibles et flexibles est devenu incontournable. Dans cette démarche, RMarkdown est un outil indispensable pour documenter, présenter et partager nos analyses réalisées avec R.
Mais parfois ce que l’on souhaite, c’est rendre un rapport RMarkdown adaptable à différentes situations, afin répéter la création de rapports sous différents scénarios.
Et dans cette situation, les scripts RMarkdown paramétrés peuvent réellement répondre à cette problématique et vous faire gagner un temps considérable !
Un script RMarkdown paramétré est un fichier RMarkdown qui accepte un ou plusieurs paramètres lors de son exécution. Ces paramètres peuvent être utilisés pour contrôler divers aspects du rapport, tels que la source des données, les variables à analyser, les graphiques à générer, les titres des différents paragraphes etc. Cela rend le rapport adaptable à différents scénarios sans avoir à modifier manuellement le code à chaque fois.
De plus, avec les scripts paramétrés, il est relativement facile de construire une petite interface graphique pour sélectionner manuellement les valeurs des paramètres à employer, ou de créer une fonction d’automatisation de la génération de documents rendus.
L’interface graphique est particulièrement confortable pour permettre à des personnes moins à l’aise avec R, de créer facilement toute une série de rapports.
Nous allons employer le jeu de données iris, et imaginer que l’on souhaite réaliser la même analyse pour les 3 espèces présentes dans les données (setosa, versicolor, virginica).
Pour cela, nous créons un fichier .Rmd, dans lequel nous allons insérer, au niveau de l’entête une section params
, comme ceci :
output:
html_document:
params:
species:
label: "Choisissez une espèce"
value : "versicolor"
input : select
choices : [setosa, versicolor, virginica]
label
permet d’écrire du texte dans l’interface.value
permet de fixer l’espèce qui sera affichée par défaut.input
correspond au type d’outil de sélection intégré à l’interface.choices
permet d’indiquer les possibilités à intégrer à l’interface.
Il est possible d’utiliser d’autres types d’input :
Nous continuons le script avec un code pour réaliser un graphique tout simple
# permet de récupérer l'espèce qui sera choisie
select_species <- params$species
library(tidyverse)
# permet de garder les lignes correspondantes à l'espèce choisie
mydata <- iris %>%
filter(Species==select_species)
# résumé des données
summary(mydata )
# réalisation d'un graphique
mydata %>%
ggplot(aes(x=Petal.Length, y=Sepal.Length))+
geom_point()+
geom_smooth(method="lm")
Dans le titre du script Rmarkdown, nous pouvons insérer `r params$species`
, afin que le titre du document rendu s’adapte automatiquement à l’espèce qui sera choisie.
Au final, voici l’ensemble de mon script .Rmd.
---
title: "Analyse des données de l'espèce `r params$species`"
author: "Claire Della-Vedova <"
date: "`r Sys.Date()`"
output:
html_document:
params:
species:
label: "Choisissez une espèce"
value : "versicolor"
input : select
choices : [setosa, versicolor, virginica]
---
```{r }
# permet de récupérer l'espèce qui sera choisie
select_species <- params$species
library(tidyverse)
# permet de garder les lignes correspondantes à l'espèce choisie
mydata <- iris %>%
filter(Species==select_species)
# résumé des données
summary(mydata )
# réalisation d'un graphique
mydata %>%
ggplot(aes(x=Petal.Length, y=Sepal.Length))+
geom_point()+
geom_smooth(method="lm")
```
Si vous voulez essayer, il vous suffit d’ouvrir un nouveau document Rmarkdown, et de replacer le code par celui-ci
Rien de plus simple ! Dépliez le menu Knit et choisissez Knit With Parameters
Vous allez alors obtenir l’interface suivante :
Sélectionnez une espèce et cliquez sur le bouton Knit en bas de la page pour générer le document rendu (uniquement html) ci-dessous :
Il ne vous reste plus qu’à renommer le fichier rendu obtenu, et recommencer avec une autre espèce !
Si vous le souhaitez, vous pouvez automatiser la génération des rapports pour les différentes espèces, en vous appuyant sur la fonction render()
du package rmarkdown
. Cette fonction render()
est celle qui est employée lorsqu’on utilise le bouton Knit, pour générer le document rendu.
Dans l’exemple ci-dessous, j’ai créé ma propre fonction render()
. Celle-ci prend en argument le nom d’une espèce, puis va chercher le script rmd (ici, il se nomme exemple_rmd-parametres.rmd
), fixe la valeur du paramètre species avec celle passée en argument, exécute le script et cré le document rendu en lui donnant un nom qui combine l’espèce entrée en argument, et la date du jour !
# fonction de render en fonction de l'espece spécfiée
render_species <- function(species){
rmarkdown::render(
input="exemple_rmd-parametres.rmd",
output_file = paste0("report_",
species,
"_",
Sys.Date(),
".html"),
params=list(species=species)
)
}
# exemple d'utilisation
render_species("Adelie")
NB : la fonction et son appel doivent être exécutés dans la console.
À l’aide d’une boucle ou d’une fonction lapply()
, vous pouvez alors appliquer automatiquement la fonction sur toutes les espèces et ainsi générer automatiquement tous les rapports !
library(forcats)
species_list <- fct_unique(iris$Species)
# application de la fonction à toutes les espèces
lapply(species_list, render_species)
Enjoy 🤩🚀
Il est bien évidemment possible d’intégrer plusieurs paramètres dans vos script.Rmd et donc dans vos interfaces, et dans vos fonctions pour automatiser la génération des documents rendus. Vous trouverez plus d’informations ici.
• https://bookdown.org/yihui/rmarkdown/parameterized-reports.html
• https://docs.posit.co/connect/user/param-rmarkdown/
• https://bookdown.org/yihui/rmarkdown-cookbook/parameterized-reports.html
Alors, que pensez-vous de ces scripts paramétrés ?
🙏 Dites-moi le en commentaire 👇👇👇
Retrouver le planning et les programmes de mes formations ici 👇👇👇
Retrouver mes propositions de services ici 👇👇👇
C’est possible en faisant un don sur la page Tipeee du blog
Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.
3 Responses
Merci pour vos cours !
Je connaissais pas, merci c’est chouette cette fonctionnalité.
Je ne connaissais pas non plus mais c’est super utile !
Un grand merci !