Comme vous avez pu le remarquer, entre deux sessions de R, un certain nombre d’éléments sont oubliés, en particulier le répertoire de travail. Pour palier, à ce problème, il existe, dans R Studio, la notion de Projet qui permet de garder en mémoire la configuration plus globale de R.
Pour créer un nouveau projet, vous devez suivre les étapes suivantes :
mon_projet
Une nouvelle instance de R Studio est ouverte, avec une nouvelle session de R. Un fichier
mon_projet.Rproj
est maintenant créé dans le répertoiremon_projet/
.
Vous pouvez maintenant faire les modifications que vous le souhaitez (ouvrir certains fichiers, choisir un répertoire de travail spécifique - souvent celui du projet, …). Tant que le projet sera sauvegardé régulièrement, la session R Studio sera la même quand vous relancerez le logiciel en ouvrant le fichier
R markdown
Un document R markdown
(généralement enregistré avec
l’extension .rmd
ou .Rmd
) permet d’une part
d’utiliser la syntaxe markdown
pour écrire du texte, mais aussi d’inclure des commandes R
directement dans le document. Ainsi, un seul document contient le code
et le commentaire, ce qui est un atout non négligeable pour des rapports
ou présentations devant être mises à jour ou refaits régulièrement.
Il est possible d’inclure les commandes R
soit dans un
bloc de code, appelé chunk dans R Studio, ou
en ligne, appelé inline chunk.
Pour créer un document R markdown
dans R
Studio, vous pouvez cliquer sur l’icône avec un plus, puis sur
R markdown…. Vous devez voir apparaître une interface vous
demandant de choisir entre un document, une présentation, une
application Shiny ou de choisir un template prédéfini.
Nous allons rester sur le document pour le moment. De plus,
vous pouvez indiquer le titre et l’auteur, ainsi que choisir le format
de sortie (HTML, PDF ou Word). Nous allons garder HTML pour le
moment.
Lors de la création d’un nouveau document R markdown
,
vous devez voir apparaître en début de document une partie d’en-tête,
comme ci-dessous, au format YAML
.
---
title: "Untitled"
author: "FX Jollois"
date: "04/03/2025"
output: html_document
---
Dans cette en-tête, nous pouvons donc définir le titre,
éventuellement un sous-titre (avec subtitle:
), le ou les
auteurs, la date et des options de sortie. Pour le moment, nous allons
garder la sortie au format HTML. Pour passer au format PDF
,
il faut écrire pdf_document
dans output
(ainsi
qu’avoir \(\LaTeX\) installé sur sa
machine). Pour créer un document de type Word, il faut choisir
word_document
pour output
.
Il y a d’autres possibilités de sortie, ainsi que la possibilité d’ajouter d’autres paramètres de sortie, que nous ne verrons pas ici.
Un chunk sera donc un bloc de commande R
(ou
autre langage possible) qui sera exécuté par R Studio.
Pour cela, il faut indiquer sur la première ligne le langage utilisé.
Pour R
, voici donc un exemple simple
```{r}
# code R
summary(iris)
```
Dans le document sera donc intégré à la fois le code, ainsi que le résultat de son exécution. L’exemple donnera donc
# code R
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
Il est possible de nommer le chunk en lui donnant un label
(sans espace, sans accent) après r
dans les
{}
. Ceci est intéressant surtout dans l’étape de
développement, car si une erreur arrive lors de l’exécution, il sera
plus facile de retrouver dans quel chunk est l’erreur (indiqué
lors de l’affichage de l’erreur).
De plus, il est possible de mettre des options dans le
chunk, toujours dans les {}
, après une
","
. Voici quelques options classiques et utiles (avec leur
valeur par défaut indiquée, si elle existe) :
include = TRUE
: si FALSE
, le code est
exécuté mais il n’est pas inclus dans le document (ni le code, ni son
résultat)echo = TRUE
: si FALSE
, le code n’est pas
affiché mais bien exécutéeval = TRUE
: si FALSE
, le code est
affiché mais n’est pas exécutéresults = 'markup'
: permet de définir comment le
résultat est affiché (intéressant parfois)fig.cap
: titre du graphique produitIl est possible de mettre plusieurs options, toutes séparées par des
","
.
Dans la suite, voici quelques exemples de chunks avec options. Regardez le source pour mieux comprendre le fonctionnement.
Tout d’abord, on importe les données Iris.txt
, mais ce
genre de code n’est souvent pas à inclure, dans le sens où l’on ne veut
ni l’afficher, ni voir de résultat.
Ensuite, la librairie knitr
contient une fonction
kable()
permettant d’afficher un data.frame
au
format markdown
. Cela permet d’avoir un résultat plus
lisible qu’une sortie de console R
classique.
knitr::kable(head(iris, 10))
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 |
4.7 | 3.2 | 1.3 | 0.2 | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.6 | 1.4 | 0.2 | setosa |
5.4 | 3.9 | 1.7 | 0.4 | setosa |
4.6 | 3.4 | 1.4 | 0.3 | setosa |
5.0 | 3.4 | 1.5 | 0.2 | setosa |
4.4 | 2.9 | 1.4 | 0.2 | setosa |
4.9 | 3.1 | 1.5 | 0.1 | setosa |
Enfin, on peut vouloir faire un graphique, ce qui pourrait donner ce qui suit. Pour ce genre de présentation, nous pouvons décider de ne pas afficher le code permettant de les obtenir.
Répartition de la longueur de sépale selon l’espèces des individus
On peut faire des chunks en ligne en encadrant le code avec
des `
et en commencant le code par un r
. Par
exemple, on peut dire que dans le jeu de données iris
sont
présentés 150 individus et 5 variables.
Il est possible de déterminer des paramètres globaux pour tous les
blocs chunks du document (sauf paramètres locaux précisés).
Ceci doit se faire comme suit, avec la fonction set()
de
l’objet opts_chunk
de la librairie knitr
. Il
est par exemple possible de définir echo=FALSE
pour n’avoir
aucun code apparaissant dans le document.
knitr::opts_chunk$set(...)
.RData
Plutôt que de devoir importer plusieurs fois des données, il est
possible d’utiliser le format de données .RData
, qui permet
de sauvegarder tout ou partie de l’environnement de travail. Pour cela,
nous allons utiliser les fonctions save()
et
save.image()
pour sauvegarder, et la fonction
load()
pour charger les variables sauvegardées.
En premier lieu, il est possible de sauvegarder uniquement une
variable créée dans un fichier .RData
. Ci-dessous, nous
créons l’objet a
, qui est une chaîne simple, puis nous la
sauvegardons dans le fichier a.RData
. Enfin, nous la
supprimons (et l’affichons pour bien voir qu’elle n’existe plus).
a = "test de RData"
print(a)
## [1] "test de RData"
save(a, file = "a.RData")
rm(a)
print(a)
## Error in eval(expr, envir, enclos): object 'a' not found
L’intérêt est donc que la variable a
est dans le fichier
.RData
, qu’il est possible de charger dans R
comme suit.
load("a.RData")
print(a)
## [1] "test de RData"
Pour sauvegarder plusieurs variables, il faut juste les lister dans
la fonction save()
.
b = "deuxième test de RData"
c = 123456789
save(b, c, file = "bc.RData")
rm(b, c)
print(b, c)
## Error in eval(expr, envir, enclos): object 'b' not found
Et on les charge de la même façon.
load("bc.RData")
print(b)
## [1] "deuxième test de RData"
print(c)
## [1] 123456789
Quand on lance la fonction ls()
, on liste l’ensemble des
objets créés dans l’environnement de travail. La fonction
save.image()
va tous les sauvegarder dans un même fichier
.RData
.
ls()
## [1] "a" "b" "c" "iris"
save.image("env.RData")
Ensuite, nous allons nettoyer l’environnement de travail, en
supprimant tous les objets (1ère ligne ci-dessous). Ainsi, en listant
les variables avec ls()
, on s’aperçoit qu’il n’y a plus
rien.
rm(list = ls()) # Pour tout supprimer de l'environnement
ls()
## character(0)
Enfin, toujours avec la fonction load()
, on charge les
variables présentes dans le fichier, qu’on retrouve bien en faisant un
ls()
.
load("env.RData")
ls()
## [1] "a" "b" "c" "iris"
Dans votre document, penser à nommer chaque chunk différemment. Et n’hésiter pas à commenter le document pour le rendre plus conforme à ce qu’on pourrait vouloir produire comme document.
Vous trouverez sur le site rmarkdown beaucoup d’informations et de compléments sur cette librairie. Beaucoup sont résumées dans ce document.
Nous allons travailler sur les données varespec
et
varechem
présente dans le package vegan
.
Quelques informations sont disponibles sur cette
page. Pour les charger dans R, vous devez exécuter les commandes
suivantes :
data(varechem)
data(varespec)
R markdown
, intitulé
"TP"
, avec votre nom comme auteur"TP.Rmd"
varechem
, et incluant un
lien vers la page de présentationBaresoil
Baresoil
Fe
:
Fe_bin
dans le jeu de
données varechem
prenant comme valeur "high"
pour Fe > 50
et "low"
sinon, en affichant
le code pour la créer"Fe"
avec les deux modalités de
Fe_bin
"Effectif"
avec l’effectif pour chaque
transmissionfig.cap
)fig.align
)2.5
(cf fig.width
et
fig.height
)"orange"
pour "high"
et
"blue"
pour "low"
script.R
dans lequel vous allez
placer tout votre code d’importation des données, de manipulations de
celles-ci et de création des graphiquesRData
contenant l’ensemble des
éléments utiles pour la création de votre fichier html
RData
dans votre fichier
Rmd