31 janvier 2018

De quoi parle-t-on?

Produire un document (output) html, PDF, word etc. qui inclue des parties de texte qui peuvent être formattées, et des bouts de codes R (ou autres), le tout à partir d'un document de type Rmd dans R.

Cette dispositive en est un bon exemple!

Données iris:

head(iris, n=3L)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa

f pour mettre la présentation en plein écran

Pourquoi utiliser R Markdown?

  • Arrêter de faire du copier-coller entre R et un autre document!
  • Envoyer des résultats à un collaborateur
  • Collaborer plus facilement sur un code
  • Pouvoir mettre à jour des rapports plus rapidement
  • Monter plus facilement un cours!

R Markdown = Markdown + R

Markdown : Language de balisage léger (!!), avec une syntaxe facile à lire et à écrire.

.md.html (→ .doc / .pdf)

Par exemple, mettre un mot en italique:

html : <i>un mot</i>

laTeX: \textit{un mot}

markdown: _un mot_

R Markdown = Markdown + R

R Markdown : Document Markdown, mais avec des "chunks" (bouts) de code R intégrés

.Rmd.md.html (→ .doc / .pdf)

.Rmd.R

Quelques pré-requis

Packages rmarkdown & knitr

install.packages("knitr")
install.packages("rmarkdown")

Pandoc: Convertiseur de fichiers universel

library (rmarkdown)
rmarkdown::pandoc_available() # If TRUE, OK! 

Vue d'ensemble d'un code RMarkDown

Ce que ça donne en html

Exercice #1a

Créer un fichier .Rmd dans un éditeur de texte (p.ex. NotePad), avec une section d'en-tête, un bout de texte Markdown et un bout de code R.

Exercice #1a - En-tête

---
output: html_document
---

---
output:
  html_document: default
  pdf_document: default (mais laTeX doit être installé)
---

---
output:
  html_document:
    theme: yeti
---

Différents thèmes possibles

Exercice #1a - En-tête

Autres options:

---
title: "Avancement de mon projet"
author: "Audrey Bourret"
date: "31 janvier 2018"
output:
  html_document:
    theme: yeti
---

Exercice #1a - Texte et code

---
output: html_document
---

# Intro
Voici le jeu de donnée que je vais utiliser:

|```{r}
|head(iris)
|````

Ne pas mettre les "|" !

Enregistrer le document en .Rmd

Voir CodeSimple.Rmd pour un exemple

Exercice #1b - Transformation dans R

Compiler le fichier .Rmd en .html, .md et .R (voir EnvoieDirectDeR.R)

library(knitr)
library(rmarkdown)

# Répertoire de travail  = endroit où les fichiers .Rmd sont...
setwd("C:/Users/Audrey/Documents/CSBQ/Ateliers/H2018/RMarkDown")

# .Rmd --> .html
rmarkdown::render("CodeSimple.Rmd") # .html

# .Rmd --> .md
knit("CodeSimple.Rmd") # .md

# .Rmd --> .R
purl("CodeSimple.Rmd") # .R
purl("CodeSimple.Rmd", output = " CodeSimple2.R", documentation = 2)

Option #2: Directement dans Rstudio

File → New file → R Markdown

À noter: le répertoire de travail est toujours celui où le fichier .Rmd est enregistré

Syntaxe de base de Markdown

# Entête 1 (peut aller jusqu'à 6#)
_italique_
**gras**
équation: $ A = B + C $
> Citation

Liste
* A
* B
  + C

[lien](www.biodray.github.io)
![image](folder/image.png)

Syntaxe de base de Markdown

Options des chunks

head(iris, n=3L)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa

eval = FALSE : ne roule pas le code
include = FALSE : roule le code, mais montre ni le code, ni le résultat
echo = FALSE : roule le code mais montre seulement le résultat

Il peut être pratique de donner un nom à chaque chunk (ici exemple)

Options des chunks

head(iris, n=3L)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa

L'option message est particulièrement utile lorsqu'on appele un package.

Options des chunks

Options des chunks

Il est possible de spécifier les valeurs par défault des options des chunks:

# Ajouter dans un chunck {r setup, include=FALSE} au début du projet!

knitr::opts_chunk$set(echo=TRUE, fig.align="center")

# "Note the global options set in one chunk will not affect the options in this chunk 
#  itself, and that is why we often need to set global options in a separate chunk."

Beaucoup d'autres options sont disponibles, voir le cheatsheet!

Code directement dans le texte (inline)

Astuces - Tableaux

# Sans formattage
iris[1:2,]
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
# Avec formattage kable()
library(knitr)
kable(iris[1:2,])
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa

Astuces - divers

  • Pour ajouter une ligne vide, utiliser &nbsp;
  • Pour anoter votre code, utiliser <!-- comme en html-->

Ressources