plot of chunk
headband

Ce post s'adresse principalement à ceux qui ont un blog sous WordPress et souhaiteraient y présenter des lignes de commande et des résultats obtenus sous R. Il est possible que peu de gens se sentent concernés par ce besoin certes très spécifique... Mais, pour ma part, j'aurais été bien heureuse de tomber sur un tel post lorsque je cherchais à automatiser la production de mes posts depuis R/RStudio. J'ai néanmoins bénéficié de nombreux "aiguillages" de mes pairs blogueurs pour des besoins proches... J'y ferai référence par la suite.

Qu'est-ce que Markdown, et R Markdown?

Markdown est un langage de balisage léger qui permet un formatage de documents, par exemple pour une publication sous forme de page web. Sa syntaxe est assez "transparente", et assez simple à écrire (davantage, par exemple, qu'un document écrit en html). Ainsi, un document formaté en Markdown est peu marqué par ses balises et est donc lisible comme tel.

Par ailleurs, ce langage a pour avantage d'être assez facilement converti en de nombreux formats (classiquement, en html, pdf, ou Word; et spécifiquement, pour une publication plus aisée sous WordPress, en Markdown).

Pour en savoir davantage sur Markdown, c'est par ici ou par là.

Il est possible d'écrire des documents en R Markdown, en intégrant des morceaux de code R au document Markdown. Tous les posts de ce blog ont ainsi été

  • écrits en R Markdown,
  • convertis en Markdown grâce au package knitr de R,
  • publiés sous WordPress, à l'aide de l'extension WordPress WP-Markdown.

En pratique, comment faire pour écrire un document R Markdown sous RStudio?

  • Ouvrez Rstudio
  • Si nécessaire, installez les packages markdown et knitr
  • Ouvrez un nouveau fichier de type R Markdown (.Rmd)
  • Placez l'entête suivante en haut du document .Rmd:

    ---

    output: md_document

    ---

Notez que si l'entête ci-dessus ne figure pas dans votre document, le bouton Knit de RStudio vous proposera de convertir votre document non pas en un document Markdown, mais en un document html, pdf, ou Word.

Ecrivez ensuite votre texte les conventions de notation Markdown, entrecoupé de morceaux (chunks) de code R. Vous pouvez trouver un exemple minimal de document R Markdown (ainsi que des explications complémentaires) sur ce post. Par RStudio, on peut alors utiliser un bouton Knit qui convertit votre document R Markdown (.Rmd) en Markdown (.md).

Et pour inclure des figures et des données?

Pour inclure vos figures ou donner accès à des données depuis votre blog, il est nécessaire que les chemins des figures tels qu'ils apparaissent dans votre document Markdown corresponde au chemin qu'ils auront sur votre l'espace serveur dédié à votre blog.

Pour ma part, j'ai spécifié les chemins suivants pour y poser ou générer mes fichiers et figures:

post="RMarkdown/"
setwd(paste("C:/Documents and Settings/lvaudor/Bureau/mon_blog/Posts/",post,sep=""))
fig.path=paste("../../lise.vaudor/Rfigures/",post,sep="")
data.path=paste("../../lise.vaudor/Rdata/",post,sep="")
dir.create(fig.path,showWarnings=FALSE)
dir.create(data.path,showWarnings=FALSE)

Ainsi, lorsque je veux créer ou lire un fichier, voici comment je procède:

Pour l'écriture:

x=1:10
y=3*x+rnorm(10,0,2)
dataxy=data.frame(x=x,y=y)
write.csv(dataxy,file=paste(data.path,"data_exemple.csv", sep=""))  

Pour la lecture:

dataxy_lu=read.csv(file=paste(data.path,"data_exemple.csv", sep=""))
print(dataxy_lu)

##     X  x      y
## 1   1  1  4.462
## 2   2  2  7.303
## 3   3  3 10.869
## 4   4  4 12.945
## 5   5  5 16.654
## 6   6  6 16.311
## 7   7  7 23.189
## 8   8  8 25.909
## 9   9  9 25.754
## 10 10 10 29.323

Et pour créer et inclure un graphique dans le document, il faut préciser dans les options knitr l'option fig.path=fig.path

plot of chunk
mon_plot

Enfin, en plus de copier le document Markdown sur votre tableau de bord WordPress pour créer votre nouveau post, n'oubliez pas de copier les dossiers "Rfigures" et "Rdata" (qui pour le moment se trouvent sur votre ordinateur et votre ordinateur seulement) à la racine de l'espace serveur dédié à votre site!!