Les résultats des exercices sont à consulter sur https://mtes-mct.github.io/savoirfR/cheesedown/.

Exercice 1 : prise en main (chap 3.2)

  • Ouvrir Rstudio
  • Créer un fichier Rmarkdown, format html
  • prévisualiser le document avant toutes modifications
  • Se mettre en auteur du document
  • Rajouter un theme spécifique
  • Cliquer sur knit pour compiler le document et identifier les correspondances entre fichier .Rmd et fichier html

Résultat attendu :

Exercice 2 (chap 3.5)

Nous allons travailler sur les informations du site www.cheese.com. Nous nous appuyons pour cela sur l’exemple proposé pour l’évènement tidytuesday du 4 juin 2024.

Le fichier markdown qui sera créé pendant toute cette formation parlera donc de fromage !

  • Partir du fichier .Rmd de l’exercice précédent
  • Saisir un titre, un paragraphe, une liste d’item, un encart et un lien. N’hésitez pas à jouer avec la mise en forme du texte en syntaxe markdown.
  • Appuyer sur visual pour avoir un aperçu du rendu final

Résultat attendu :

Exercice 3 (chap 4.4)

  • Poursuivre le fichier .Rmd de l’exercice précédent
  • Créer un chunk pour définir des options générales, il ne doit pas être visible dans le document final
  • Créer un chunk pour charger les packages nécessaires, il ne doit pas être visible dans le document final
  • Créer un nouveau chapitre qui aura pour objet la présentation de quelques observations du jeu de données
  • Ajouter un chunk pour stocker les données utilisées dans une dataframe. Ni la dataframe, ni le code ne doivent s’afficher dans le document final. Pour récupérer les données tidytuesday :
tuesdata <- tidytuesdayR::tt_load('2024-06-04')

data_fromage <- tuesdata$cheeses
  • Ajouter une ligne de texte qui indique le nombre de fromages disponibles dans la dataframe (cette valeur doit être calculée automatiquement)

  • Créer une variable dans cette dataframe pour indiquer si l’origine des fromages (colonne country) est française ou non

  • Ajouter un chunk créant un graphique en barres qui indique le nombre de fromage par origine (FR ou non-FR). Le graphique devra apparaître dans le document final, pas le code pour le créer.

  • Ajouter une image d’illustration en tête d’article

  • Générer le document

Résultat attendu :

Exercice 4 : multiple format de sortie (chap 5.3)

En repartant du fichier .Rmd de l’exercice précédent :

  • Modifier les options pour avoir un sommaire flottant affichant un seul niveau de titre
  • Changer le thème utilisé pour la sortie HTML
  • Générer le document
  • Ajouter un format de sortie à l’entête pour qu’il génère un document PDF et un document odt en plus du HTML. Rappel : il est important de vérifier la compatibilité des éléments produits par le code avec ce nouveau format.

Résultat attendu :

Exercice 5 : paramétrer un rapport (chap 6.5)

  • Créer un nouveau .Rmd
  • Ajouter comme paramètre dans le YAML le pays (country) en choisissant “France” comme valeur par défaut
  • Ajouter un titre pour qu’il dépende de ce paramètre
  • Filtrer la dataframe en fonction de ce paramètre
  • Ajouter un graphique construit à partir de cette dataframe filtrée. Son titre peut également dépendre du paramètre country. (voir la page dédiée à la réalisation de graphique avec ggplot dans le module 5 du parcours R, ou réutiliser le code ci-dessous)

Par exemple, on peut regrouper les fromages par type simplifié et représenter le pourcentage de matières grasses par type. C’est l’occasion de découvrir ou re-découvrir certaines nouvelles fonctions de dplyr apparues en 2026 :

data_fromage <- tuesdata$cheeses %>% 
  filter_out(when_any(is.na(fat_content),
                      is.na(type))) %>% 
  mutate(type = replace_when(type,
                             str_detect(type, 'soft') ~ 'molle',
                             str_detect(type, 'firm') ~ 'ferme',
                             str_detect(type, 'hard') ~ 'dure')) %>%
  mutate(fat_content = as.numeric(str_extract(fat_content, "^\\d+(\\.\\d+)?"))) %>% 
  filter(country==params$country)


ggplot(data_fromage) +
  geom_violin(aes(x = type, y = fat_content, fill = type)) +
  scale_fill_manual(values = c("dure" = "#EEDC82", "ferme" = "#FFFACD", "molle" = "#FFFAF0")) +
  theme_gouv(plot_title_size = 12,
             subtitle_size = 12) +
  labs(title = "% de matière grasse par type de pâte de fromage",
       subtitle = params$country,
       x = "Type de pâte",
       y = "% de matière grasse") +
  theme(legend.position = 'none')
  • Générer ce HTML à l’aide du bouton knit
  • Créer dans un nouveau script une fonction qui génère le HTML à partir d’une liste de pays
  • Appliquer cette fonction à une liste restreinte de pays (par exemple France, Italy, United States)

Résultat attendu :

Exercice 6 facultatif : tester bookdown (chap 7.7)

Expérimenter bookdown

Exercice 7 facultatif : tester l’interactivité (chap 8.5)

  • Repartir du .Rmd de l’exercice 4 au format HTML
  • Ajouter un nouveau chapitre relatif à des visualisations interactives (si besoin : voir la partie interactivité des visualisations du module 5 du parcours)
  • Créer un widget HTML interactif : un graphique ggiraph, un tableau datatable, une carte leaflet…
  • Créer une dataframe partagée à l’aide du package crosstalk
  • Utiliser cette dataframe partagée pour créer un filtre crosstalk sur la colonne country
  • Créer un widget interactif à partir de cette dataframe partagée

Résultat attendu :

Exercice 8 facultatif : gitlab (chap 9.3)

Expérimenter gitlab pages