Mon workflow R + Quarto pour la recherche reproductible
La science reproductible n’est plus une option, c’est une exigence. Pourtant, beaucoup de chercheurs encore aujourd’hui jonglent entre des scripts dispersés, des fichiers Word avec capture d’écran, et des analyses qu’ils ne peuvent plus reproduire 6 mois plus tard. Voici le workflow que j’utilise au quotidien.
Les 5 piliers de mon workflow
- RStudio Projects : chaque étude = un projet isolé avec son propre
.Rproj. - Quarto : rapports, articles, slides, sites — tout en un format texte.
- Git + GitHub : versionnage du code et collaboration.
- renv : capture exacte des versions de packages.
- Structure de dossiers standardisée : même organisation pour chaque projet.
1. La structure de projet
J’utilise toujours la même arborescence, ce qui me permet de retrouver mes repères instantanément :
mon-projet/
├── mon-projet.Rproj
├── README.md
├── _quarto.yml
├── renv.lock
├── .gitignore
│
├── data/
│ ├── raw/ # données brutes (jamais modifiées)
│ ├── processed/ # données nettoyées
│ └── metadata.md # description des fichiers
│
├── R/
│ ├── 01-import.R
│ ├── 02-clean.R
│ ├── 03-eda.R
│ ├── 04-models.R
│ └── utils.R
│
├── reports/
│ ├── rapport-final.qmd
│ └── figures/
│
└── output/
├── figures/
└── tables/
2. Configuration Quarto
Un fichier _quarto.yml à la racine configure le projet entier :
project:
type: default
output-dir: output
execute:
echo: true
warning: false
message: false
cache: true
format:
html:
theme: cosmo
toc: true
toc-depth: 3
number-sections: true
code-fold: false
fig-width: 8
fig-height: 5
pdf:
documentclass: article
geometry: "margin=2cm"
fig-width: 7
lang: fr
3. renv pour la reproductibilité des packages
Combien de fois avez-vous vu un script ne plus marcher parce qu’un package a été mis à jour ? renv règle ce problème :
library(renv)
# Initialiser renv dans un projet
renv::init()
# Après avoir installé des packages
renv::snapshot() # Gèle l'état actuel dans renv.lock
# Sur un autre ordinateur (ou plus tard)
renv::restore() # Restaure exactement les mêmes versions
4. Git pour le versionnage
Un bon .gitignore est essentiel pour ne pas alourdir le repo avec des données ou des sorties :
# RStudio
.Rproj.user/
.Rhistory
.RData
.Ruserdata
# renv
renv/library/
renv/local/
renv/cellar/
renv/lock/
# Données sensibles
data/raw/*.csv
data/raw/*.xlsx
# Outputs générés
output/
*_files/
*.html
*.pdf
5. Un exemple de rapport Quarto
---
title: "Analyse des données de pêche 2024"
author: "Sosthène"
date: today
format: html
---
## Introduction
Ce rapport analyse les données de prélèvements...
## Données
```{r}
library(tidyverse)
data <- read_csv("data/processed/peche_2024.csv")
skimr::skim(data)
```
## Analyse
```{r}
#| label: fig-tendance
#| fig-cap: "Tendance temporelle des captures"
data %>%
ggplot(aes(x = annee, y = capture)) +
geom_line() +
theme_minimal()
```
La figure @fig-tendance montre une tendance décroissante...
Les avantages
- Tout en un endroit : code, texte, figures, tableaux dans le même fichier
.qmd. - Reproductible : relancer le projet 2 ans plus tard donne EXACTEMENT le même résultat.
- Collaboratif : Git permet à plusieurs personnes de travailler sans écraser les fichiers des autres.
- Multi-format : HTML, PDF, Word, slides — tout depuis le même source.
- Versionné : vous pouvez revenir à n’importe quel état antérieur du projet.
À retenir
Adopter un workflow reproductible demande un investissement initial (apprendre Git, Quarto, renv), mais le retour est exponentiel : moins de temps perdu à retrouver « la bonne version du script », plus de confiance dans vos résultats, et une collaboration vraiment efficace. Commencez petit, soyez constant, et 6 mois plus tard vous ne pourrez plus travailler autrement.

Réponses