Exemple simple : rmd en pdf

Rmarkdown avec Rstudio

Prise en main facile avec RStudio

Menu File > New File > R Markdown...

Enregistrer le fichier .rmd crée

Compiler (knit) un Rmarkdown

Fichier généré (exemple HTML)

Comment cela fonctionne ?

🧶 Tricot d’un Rmarkdown ?

Pandoc est généralement pré-installé sur les systèmes d’exploitation MACOS et Windows.
Si vous n’avez pas \(\LaTeX\) d’installé, utilisez le package tinytex pour la compilation en pdf.

Les 3 composants d’un rmd

Les 3 composants d’un rmd

  • En-tête YAML : indications de variables pour la compilation du document : métadonnées (titre, auteur, date…), type de document souhaité (format et template), options de mise en page (TOC, Bibliographie, CSS…).
    Documentation → R Markdown: The Definitive Guide.

  • Texte balisé en Markdown : texte en langage naturel mis forme grâce à la syntaxe markdown.
    Documentation → Learn X in Y minutes

  • Chunks : code qui sera affiché (ou pas) et dont le résultat sera inséré (ou pas) dans le document final. Plusieurs options permettent de gérer l’éxécution, l’affichage du code et de résultats.
    Documentation → Chunk options and package options

A. En-tête du document (YAML)

---
title: Programmation lettrée et Notebook
author: Marc Done
date: 2023-02-21
output: 
  ioslides_presentation:
    transition: slower
    incremental: true
    widescreen: true
    logo: img/rmarkdown.png
---

De nombreuses variables sont paramétrables. Certaines sont spécifiques à des formats de sortie ou à des templates. Mais, dans tous les cas :

L’indentation des variables doit être parfaite !

Multiplier les formats de sortie ?

La variable output vous offre la possibilité de produire plusieurs formats à partir du même fichier Rmd :

---
title: Programmation lettrée et Notebook
author: Marc Done
date: 2023-02-21
output: 
  html_document: default
  pdf_document: default
---

Kniter votre fichier en ligne de commande de la façon suivante :

rmarkdown::render("mon_premier_rmarkdown.Rmd", output_format = "all")

Les templates disponibles

De nombreux packages fournissent des modèles de mise en page prêts à l’emploi :

bookdown, distill, flexdashboard, hrbrthemes, komadown, komaletter, learnr, linl, memor, pagedown, papaja, pinp, prettydoc, radix, revealjs, rmarkdown, rmdformats, rmdshower, rticles, rzine, tufte, unilur, vitae, xaringan

Ils permettent de produire des documents de toute forme, comme :

- des documents (pages) HTML,
- des documents paginés (articles, livres, thèses) en pdf avec \(\LaTeX\), docx, odt…,
- des présentations/diaporama en format HTML, pdf ou pptx,
- des tableaux de bord interactif,
- des cours et sujets d’examens (interactif ou non),
- et même des sites internet statiques !

Ex : rmdformats - modèle readthedown

---
title: "Template readthedown proposé par le package rmdformats"
date: "2023-02-21"
output:
  rmdformats::readthedown:
    highlight: kate
---


L’interface Rstudio permet de générer un rmd paramétré dans un modèle de mise en page souhaité. Pour cela, installer le package qui fournit le template que vous souhaitez utiliser. Ex :

install.packages("rmdformats")

Exemple rmdformats

Une fois installé, les templates proposés par le package installés sont disponibles en clic-buton dans Rstudio :

Ajouter ses variables… modulables !

Pour produire des rapports sur différentes périodes, zones géographiques… A partir du même fichier R Markdown !

---
title: Rapport statistique IDH
output: html_document
params:
  annee: 2023
  region: Europe
---


Kniter votre fichier en ligne de commande de la façon suivante :

rmarkdown::render("monfichier.Rmd", params = list(annee = 2013, region = Asie))

Ajouter ses variables… modulables !

Cette fonctionnalité est aussi disponible en clic-bouton via l’interface Rstudio :


B. Zone de texte - balisage markdown

C. Bloc de code - chunks

Deux façons d’insérer du code dans son document :

  1. Code chunk

    ```{r, eval=TRUE, echo=FALSE}
    
    head(mtcars)
    
    ```
  2. Inline code, pour inclure du code dans une zone de texte

    La moyenne est de `r mean(mtcars$cyl)`.

Les options disponibles

chunk plurilingues

names(knitr::knit_engines$get())
##  [1] "awk"       "bash"      "coffee"    "gawk"      "groovy"    "haskell"  
##  [7] "lein"      "mysql"     "node"      "octave"    "perl"      "php"      
## [13] "psql"      "Rscript"   "ruby"      "sas"       "scala"     "sed"      
## [19] "sh"        "stata"     "zsh"       "asis"      "asy"       "block"    
## [25] "block2"    "bslib"     "c"         "cat"       "cc"        "comment"  
## [31] "css"       "ditaa"     "dot"       "embed"     "eviews"    "exec"     
## [37] "fortran"   "fortran95" "go"        "highlight" "js"        "julia"    
## [43] "python"    "R"         "Rcpp"      "sass"      "scss"      "sql"      
## [49] "stan"      "targets"   "tikz"      "verbatim"  "glue"      "glue_sql" 
## [55] "gluesql"

Ex : python et le package reticulate

  1. Initialisation de la configuration

    ```{r, include = FALSE, eval = TRUE}
    library(reticulate)
    use_python("usr/local/bin/python")
    use_virtualenv("r-reticulate")
    py_install(c("pandas", "numpy"))
    ```
  2. Script python

    ```{python, eval = TRUE}
    a = 15 + 45
    print(a)
    ```
    ## 60

Exemple : SQL avec scripts externes

Etape 1 : connexion à la base de données

```{r , eval = TRUE}
conn <- DBI::dbConnect(RSQLite::SQLite(), path = ":memory:")
```


Pour se déconnecter (en fin de document) :

```{r , eval = TRUE}
DBI::dbDisconnect(conn)
```

Etape 2 : Lecture et éxécution d’un fichier sql

```{sql, connection=conn, code=readLines('sql/list_tables.sql')}

```
SELECT name FROM sqlite_master WHERE type='table';
1 records
name
mtcars

Ex : node.js avec un script externe

Vous voulez présenter du code node.js.
Vos scripts sont dans des fichiers .js.

Vous pouvez écrire :

```{node, code=readLines('node/example.js')}
```
const hi = (name) => {
  console.log("Hello " + name + "!");
};

hi("Bob");

Un peu de documentation ?

Cheatsheet Rmarkdown

Bibliographie

Les références :


En français :

Crédits

Cette présentation est fortement inspirée d’un excellent support de communication existant, dont le code source est disponible sur GitHub.


Il s’agit d’un document Rmarkdown au format ioslides. Il a donc été très simple de repartir du code source original pour produire ce diaporama !

À vous de jouer !