quarto
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
Un outil et une méthode précieuse pour rendre intelligibles et reproductibles ses études. Un gain précieux en efficacité.
Outils
Notebook (jupyter), Rmarkdown, Quarto
Un peu d’histoire
knitr
(2011), avec des dialectes , markdownrmarkdown
(2015)quarto
(2022)Histoire de rmarkdown par l’auteur de la librairie
quarto
reprend la philosophie de rmarkdownquarto
(pour la plupart)quarto
Vignettes
Le CRAN ne supporte pas (encore) les vignettes générées par quarto
aujourd’hui. C’est un des rares cas où privilégier rmarkdown
.
Paramètres du ‘bloc’ dans les accolades en rmarkdown, après #|
en quarto.
Metadata du document : YAML
---
title: "first quarto"
author: "Raphaël Nedellec"
date: "27/01/2023"
format:
html:
code-fold: true
---
Multiples formats : html, PDF, MS Word, OpenOffice, ePub, Revealjs, PowerPoint, Beamer, et de nombreux autres
Documents, présentations, mais aussi ‘websites’ ou ‘books’
Exemple : ce cours est hébergé sur un site quarto. Les slides des cours sont aussi écrites en quarto avec revealjs, les sujets d’exercices en quarto - pdf.
#| echo: true/false/fenced
#| eval: true/false
#| warning: true/false
#| error: true/false
#| label: "my-chunk"
#| fig-*: ...
#| tab-*: ...
Liste complète des options de blocs de code avec knitr disponible ici
quarto
À utiliser aussi souvent que possible pour une analyse de données ou un projet de datascience.
source()
)renv
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.3.0 (2023-04-21)
#> os macOS 14.3
#> system aarch64, darwin20
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype UTF-8
#> tz Europe/Paris
#> date 2024-02-07
#> pandoc 3.1.1 @ /Applications/quarto/bin/tools/ (via rmarkdown)
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> ! package * version date (UTC) lib source
#> P cachem 1.0.8 2023-05-01 [?] CRAN (R 4.3.0)
#> P cli 3.6.2 2023-12-11 [?] RSPM (R 4.3.0)
#> P colorspace 2.1-0 2023-01-23 [?] CRAN (R 4.3.0)
#> P devtools 2.4.5 2022-10-11 [?] CRAN (R 4.3.0)
#> P digest 0.6.34 2024-01-11 [?] RSPM (R 4.3.0)
#> P dplyr 1.1.4 2023-11-17 [?] RSPM (R 4.3.0)
#> P ellipsis 0.3.2 2021-04-29 [?] CRAN (R 4.3.0)
#> P evaluate 0.23 2023-11-01 [?] CRAN (R 4.3.1)
#> P fansi 1.0.6 2023-12-08 [?] RSPM (R 4.3.0)
#> P farver 2.1.1 2022-07-06 [?] CRAN (R 4.3.0)
#> P fastmap 1.1.1 2023-02-24 [?] CRAN (R 4.3.0)
#> P fs 1.6.3 2023-07-20 [?] CRAN (R 4.3.0)
#> P generics 0.1.3 2022-07-05 [?] CRAN (R 4.3.0)
#> P ggplot2 * 3.4.4 2023-10-12 [?] CRAN (R 4.3.1)
#> P glue 1.7.0 2024-01-09 [?] RSPM (R 4.3.0)
#> P gtable 0.3.4 2023-08-21 [?] CRAN (R 4.3.0)
#> P htmltools 0.5.7 2023-11-03 [?] CRAN (R 4.3.1)
#> P htmlwidgets 1.6.4 2023-12-06 [?] CRAN (R 4.3.1)
#> P httpuv 1.6.14 2024-01-26 [?] CRAN (R 4.3.1)
#> P jsonlite 1.8.8 2023-12-04 [?] RSPM (R 4.3.0)
#> P knitr 1.45 2023-10-30 [?] CRAN (R 4.3.1)
#> P labeling 0.4.3 2023-08-29 [?] CRAN (R 4.3.0)
#> P later 1.3.2 2023-12-06 [?] CRAN (R 4.3.1)
#> P lattice 0.22-5 2023-10-24 [?] CRAN (R 4.3.1)
#> P lifecycle 1.0.4 2023-11-07 [?] CRAN (R 4.3.0)
#> P magrittr 2.0.3 2022-03-30 [?] CRAN (R 4.3.0)
#> P Matrix 1.6-5 2024-01-11 [?] CRAN (R 4.3.1)
#> P memoise 2.0.1 2021-11-26 [?] CRAN (R 4.3.0)
#> P mgcv 1.9-1 2023-12-21 [?] CRAN (R 4.3.1)
#> P mime 0.12 2021-09-28 [?] CRAN (R 4.3.0)
#> P miniUI 0.1.1.1 2018-05-18 [?] CRAN (R 4.3.0)
#> P munsell 0.5.0 2018-06-12 [?] CRAN (R 4.3.0)
#> P nlme 3.1-164 2023-11-27 [?] CRAN (R 4.3.1)
#> P pillar 1.9.0 2023-03-22 [?] CRAN (R 4.3.0)
#> pkgbuild 1.4.3 2023-12-10 [1] CRAN (R 4.3.1)
#> P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.3.0)
#> pkgload 1.3.4 2024-01-16 [1] CRAN (R 4.3.1)
#> P profvis 0.3.8 2023-05-02 [?] CRAN (R 4.3.0)
#> P promises 1.2.1 2023-08-10 [?] CRAN (R 4.3.0)
#> purrr 1.0.2 2023-08-10 [1] CRAN (R 4.3.0)
#> P R6 2.5.1 2021-08-19 [?] CRAN (R 4.3.0)
#> P Rcpp 1.0.12 2024-01-09 [?] CRAN (R 4.3.1)
#> remotes 2.4.2.1 2023-07-18 [1] CRAN (R 4.3.0)
#> renv 1.0.3 2023-09-19 [1] CRAN (R 4.3.1)
#> P rlang 1.1.3 2024-01-10 [?] RSPM (R 4.3.0)
#> P rmarkdown 2.25 2023-09-18 [?] CRAN (R 4.3.1)
#> P scales 1.3.0 2023-11-28 [?] CRAN (R 4.3.1)
#> P sessioninfo 1.2.2 2021-12-06 [?] CRAN (R 4.3.0)
#> P shiny 1.8.0 2023-11-17 [?] CRAN (R 4.3.1)
#> P stringi 1.8.3 2023-12-11 [?] RSPM (R 4.3.0)
#> P stringr 1.5.1 2023-11-14 [?] CRAN (R 4.3.0)
#> P tibble 3.2.1 2023-03-20 [?] CRAN (R 4.3.0)
#> P tidyselect 1.2.0 2022-10-10 [?] CRAN (R 4.3.0)
#> P urlchecker 1.0.1 2021-11-30 [?] CRAN (R 4.3.0)
#> P usethis 2.2.2 2023-07-06 [?] CRAN (R 4.3.0)
#> P utf8 1.2.4 2023-10-22 [?] CRAN (R 4.3.1)
#> P vctrs 0.6.5 2023-12-01 [?] RSPM (R 4.3.0)
#> P withr 3.0.0 2024-01-16 [?] RSPM (R 4.3.0)
#> P xfun 0.41 2023-11-01 [?] CRAN (R 4.3.1)
#> P xtable 1.8-4 2019-04-21 [?] CRAN (R 4.3.0)
#> P yaml 2.3.8 2023-12-11 [?] RSPM (R 4.3.0)
#>
#> [1] /Users/mac-RNEDEL22/Documents/Perso/Projets/r-advanced-git/renv/library/R-4.3/aarch64-apple-darwin20
#> [2] /Users/mac-RNEDEL22/Library/Caches/org.R-project.R/R/renv/sandbox/R-4.3/aarch64-apple-darwin20/ac5c2659
#>
#> P ── Loaded and on-disk path mismatch.
#>
#> ──────────────────────────────────────────────────────────────────────────────
Pour s’assurer de la reproductibilité, il faut pouvoir reproduire son environnement :
Un outil : renv
renv
.libPaths()
L’utilisation de renv
facilite la gestion des versions et la configurations des libPaths()…
renv
: workflowrenv::init()
: pour initialiser un projet avec renv
renv::snapshot()
: sauvegarder les références aux dépendances dans un fichier renv.lock
renv::restore()
: pour retourner à l’état référencé dans le fichier renv.lock
Limites
renv
: avantages.libPaths()
quarto
: programmation littéraire. Utile pour les rapports, blogs, EDA… Et pour vous faire un ‘portfolio’ facilement !renv
: gestion de l’environnement, un point essentiel de la reproductibilité des résultatsquarto
.renv
, avec beaucoup d’articles explicatifs.