Reproducible Workflows

Quarto documents, reproducible data, versioned & published

A course on reproducible workflows: writing Quarto documents and books, sourcing data reproducibly (including data.gouv.fr), and versioning / pinning / publishing analyses. It runs over three 3-hour sessions, each pairing slide decks with hands-on labs in Quarto (.qmd).

Synopsis

Professor Aymeric STAMM (CNRS & ENSAI)
ECTS Credits 0 (preliminary course)
Lectures and Tutorials 9 hrs (ENSAI)
Estimated personal workload (beyond lecture and tutorial time) ~2–3 hrs per session: completing the lab-*.qmd documents and growing your personal portfolio book across the term.
Teaching language English
Software & Packages Quarto, R + Python (via uv / uvr), and the packages {janitor}, {naniar}, {skimr}, {gt}, {palmerpenguins}, {withr}, {pins}, {vetiver}, {rdatagouv} (optional); plus git / GitHub, uvr (and renv as a baseline), Posit Connect and the data.gouv.fr open-data portal.
Teaching materials Per-session slide decks and matching lab-*.qmd documents, a starter portfolio-book zip, all downloadable below; the penguins data is sourced directly from the {palmerpenguins} package (a pinned CRAN dependency), not shipped as a file.

Prerequisites

The companion The R Statistical Language course (or equivalent base-R fluency) is assumed. No prior Quarto, git or versioning experience is required.

Subjects Covered

Slide deck Description Lab material
1 · What does reproducible mean? The reproducibility spectrum and what breaks it; setting up R, Quarto, Positron (and Python via uv); Quarto documents (YAML, code cells, qmd vs rmd); structured reporting: literate programming, captions, cross-references; the portfolio-book end goal. lab 1 · lab 2
2 · Accessing data & building the book EDA & cleaning with {skimr}, {janitor}, {naniar} and report tables with {gt}; sourcing open data from data.gouv.fr (and any portal, by code); versioning data with {pins} (and briefly models, with {vetiver}); versioning code with git (usethis + gitcreds, the commit loop, a remote, branches); Quarto books; writing for an audience. lab 1 · lab 2
3 · Version it, pin it, publish it git deepen (branch alignment, conflicts, pull requests & review); dependency management with uvr/uv (and renv as a baseline, lockfiles); {withr} for reproducible randomness; publishing to Posit Connect; reproducible habit, the portfolio rubric, and a long session to finish your Chapter 1 with peer review. lab 1 · lab 2

Learning Outcomes

By the end of this course you will be able to:

  • Explain what reproducibility is (and is not) along the reproducibility spectrum, and set up the full toolchain, R, Quarto and Positron, with Python via uv.
  • Write structured Quarto documents (YAML front matter, code cells, inline code, captions and cross-references) that a reader can follow.
  • Run an EDA loop: summarise and clean a dataset with {skimr}, {janitor} and {naniar}, and source open data from data.gouv.fr (or any portal) by code.
  • Version your data and models with {pins} and see how R and Python tooling map onto each other (uvr/renv↔︎uv, pins↔︎pins-python, vetiver↔︎vetiver-python).
  • Build your own Quarto book and grow it into a personal portfolio.
  • Version your work with git (branches, pull requests, review), pin the R version and dependencies with uvr/uv (or renv), scope randomness with {withr}, and publish to Posit Connect so others can open and reproduce it.

Materials

Everything you need for the labs and your portfolio is downloadable from this page; no need to clone the course repository.

  • Portfolio starter book (zip): the scaffold Quarto book you copy and grow all term. Unzip it, open it as a project, render it, then make it yours.
  • Session labs: see the lab column in Subjects Covered, where each lab links its .qmd source.
  • Shared data: the penguins data used in the decks and labs is sourced from the {palmerpenguins} package (a pinned dependency), so there is no data file to download or keep in sync.

Bibliography