Apprendre R avec les LLMs
14 octobre 2025
Production attendue : Rapport automatisé fonctionnel au format PDF/HTML
Automatiser pour gagner du temps
Situation réelle :
Vous avez analysé les ventes de janvier…
Maintenant on vous demande d’analyser janvier, février, mars, avril, mai, juin… 📊
Problème
Copier-coller votre code 12 fois ? Non ! Il faut automatiser.
Au lieu de :
On fait :
Demandez au LLM :
“Comment lister tous les fichiers CSV d’un dossier en R ?”
Vous découvrirez :
Testez avec vos propres fichiers !
Créez un script qui traite plusieurs fichiers :
# Lister les fichiers
fichiers <- list.files(path = "donnees/", pattern = "\\.csv$",
full.names = TRUE)
# Créer une liste pour stocker les résultats
resultats <- list()
# Boucle sur chaque fichier
for (fichier in fichiers) {
# Lire le fichier
donnees <- read.csv(fichier)
# Calculer des statistiques
stats <- data.frame(
fichier = basename(fichier),
n_lignes = nrow(donnees),
moyenne = mean(donnees$valeur, na.rm = TRUE)
)
# Stocker le résultat
resultats[[fichier]] <- stats
}
# Combiner tous les résultats
resultats_final <- do.call(rbind, resultats)
Créez une fonction réutilisable :
analyser_dossier <- function(chemin, pattern = "\\.csv$") {
# Lister les fichiers
fichiers <- list.files(path = chemin, pattern = pattern,
full.names = TRUE)
if (length(fichiers) == 0) {
stop("Aucun fichier trouvé !")
}
# Analyser chaque fichier
resultats <- lapply(fichiers, function(f) {
donnees <- read.csv(f)
data.frame(
fichier = basename(f),
n_lignes = nrow(donnees),
n_colonnes = ncol(donnees),
moyenne_valeur = mean(donnees$valeur, na.rm = TRUE)
)
})
# Combiner et retourner
do.call(rbind, resultats)
}
# Utilisation
resultats <- analyser_dossier("donnees/ventes/")
Problème : Un fichier corrompu plante tout !
# Mauvais : tout plante au premier problème
for (fichier in fichiers) {
donnees <- read.csv(fichier) # Erreur ici = tout s'arrête
analyser(donnees)
}
# Bon : gérer les erreurs
for (fichier in fichiers) {
resultat <- tryCatch({
donnees <- read.csv(fichier)
analyser(donnees)
}, error = function(e) {
message("Erreur avec ", fichier, ": ", e$message)
NULL # Retourner NULL en cas d'erreur
})
}
Demandez au LLM d’expliquer tryCatch()
!
R Markdown permet de créer des documents qui mélangent :
Formats de sortie :
Avantages :
Important
Si vos données changent, votre rapport se met à jour automatiquement !
Un fichier .Rmd
contient :
---
title: "Mon Rapport"
author: "Votre Nom"
date: "2025-01-15"
output: html_document
---
# Introduction
Ceci est du texte normal.
```{r}
# Ceci est du code R
donnees <- read.csv("data.csv")
mean(donnees$valeur)
```
## Résultats
Le graphique ci-dessous montre...
```{r}
plot(donnees$x, donnees$y)
```
Créez un nouveau fichier R Markdown :
Observez :
---
)```{r}
)Demandez au LLM :
“Explique-moi la syntaxe de base de Markdown (titres, listes, gras, italique)”
On peut contrôler ce qui apparaît dans le rapport :
```{r, echo=TRUE, eval=TRUE}
# echo=TRUE : montrer le code
# eval=TRUE : exécuter le code
x <- 1:10
mean(x)
```
```{r, echo=FALSE, eval=TRUE}
# echo=FALSE : cacher le code, montrer seulement le résultat
plot(x, x^2)
```
```{r, eval=FALSE}
# eval=FALSE : montrer le code mais ne pas l'exécuter
# Utile pour montrer des exemples
install.packages("monpackage")
```
Autres options utiles :
message=FALSE
: cacher les messageswarning=FALSE
: cacher les avertissementsfig.width=8, fig.height=5
: taille des graphiquesCréez un rapport R Markdown qui :
head()
)Structure suggérée :
Syntaxe de base :
Demandez au LLM de vous montrer plus d’options de formatage !
Problème : Vous voulez le même rapport pour différents datasets
Solution : Créer un template paramétrable
## Exercice 6 : Premier rapport paramétré {.smaller}
**Créez un rapport avec paramètres :**
````{.default}
---
title: "Analyse automatisée"
params:
dataset: "data.csv"
variable: "valeur"
titre_graphique: "Distribution des valeurs"
output: html_document
---
# Analyse de `r params$variable`
```{r}
donnees <- read.csv(params$dataset)
variable_data <- donnees[[params$variable]]
# Statistiques
cat("Moyenne:", mean(variable_data, na.rm = TRUE), "\n")
cat("Médiane:", median(variable_data, na.rm = TRUE), "\n")
# Graphique
hist(variable_data, main = params$titre_graphique)
::: {.notes}
25 minutes. Introduction aux paramètres.
:::
## Générer des rapports par programme {.smaller}
**Vous pouvez générer des rapports depuis R :**
::: {.cell}
```{.r .cell-code}
library(rmarkdown)
# Générer un rapport avec des paramètres spécifiques
render("template.Rmd",
params = list(
dataset = "ventes_janvier.csv",
variable = "montant",
titre_graphique = "Ventes de janvier"
),
output_file = "rapport_janvier.html")
# Boucle pour générer plusieurs rapports
fichiers <- c("ventes_janvier.csv", "ventes_fevrier.csv", "ventes_mars.csv")
for (f in fichiers) {
mois <- tools::file_path_sans_ext(basename(f))
render("template.Rmd",
params = list(
dataset = f,
variable = "montant",
titre_graphique = paste("Ventes de", mois)
),
output_file = paste0("rapport_", mois, ".html"))
}
```
:::
::: {.notes}
20 minutes. Automatisation complète.
:::
## Exercice 7 : Fonction de génération de rapport {.smaller}
**Créez une fonction qui génère des rapports automatiquement :**
::: {.cell}
```{.r .cell-code}
generer_rapport <- function(fichier_donnees, output_dir = "rapports/") {
# Extraire le nom du fichier sans extension
nom_base <- tools::file_path_sans_ext(basename(fichier_donnees))
# Créer le dossier de sortie si nécessaire
if (!dir.exists(output_dir)) {
dir.create(output_dir, recursive = TRUE)
}
# Générer le rapport
output_file <- file.path(output_dir, paste0("rapport_", nom_base, ".html"))
rmarkdown::render(
"template_analyse.Rmd",
params = list(
dataset = fichier_donnees,
titre = paste("Analyse de", nom_base)
),
output_file = output_file
)
message("Rapport généré : ", output_file)
return(output_file)
}
# Utilisation
fichiers <- list.files("donnees/", pattern = "\\.csv$", full.names = TRUE)
rapports <- lapply(fichiers, generer_rapport)
```
:::
::: {.notes}
30 minutes. Fonction professionnelle de génération de rapports.
:::
## Formats de sortie multiples
**R Markdown peut générer différents formats :**
````markdown
---
title: "Mon Rapport"
output:
html_document:
toc: true
toc_float: true
pdf_document:
toc: true
word_document: default
---
Objectif : Créer un système complet de génération de rapports
Spécifications :
Utilisez tout ce que vous avez appris
Fonctions, dplyr, ggplot2, gestion d’erreurs, R Markdown !
Bonus :
plotly
Documentez :
tryCatch()
✅ Automatiser le traitement de plusieurs fichiers ✅ Créer des rapports reproductibles avec R Markdown ✅ Paramétrer des analyses pour la réutilisation ✅ Générer des documents professionnels automatiquement ✅ Gérer les erreurs dans les processus automatisés ✅ Combiner toutes vos compétences en R
Automatisation :
list.files()
: lister des fichiersfor
et lapply()
sur plusieurs fichierstryCatch()
: gestion des erreursR Markdown :
echo
, eval
, message
, warning
render()
: générer des rapports par programmeParamètres :
params
dans le YAMLparams$nom_parametre
Devoirs
Séance finale : Projet collaboratif - intégrer vos compétences en équipe !
Points clés à retenir
Bravo pour ces compétences avancées ! 🎓
Séance 7 - Automatisation et rapports