10 astuces pour Rmarkdown

Si vous êtes complètement débutant en Rmarkdown, je vous conseille de commencer par lire mon  article “Guide de démarrage en Rmarkdown

Je partage ici 10 astuces pour aller un peu plus loin dans l’utilisation de ce format Rmarkdown.

Afficher un résultat dans la partie texte

Par exemple, dans votre code, vous calculez la moyenne d’une variable, et vous voulez écrire cette moyenne de façon automatique dans votre rapport. Pour cela, il faut stocker la moyenne dans un objet, ici nommé “moy_sepal_length”, et appeler ensuite cet objet dans le texte entre deux symboles de début et de fin de chunk (faites un copier-coller),  et précédé par la lettre r :

R markdown

Le rendu:

R markdown

Générer la date de façon automatique

Il est possible d’utiliser une fonction R dans l’en-tête. Cela permet notamment de générer la date de façon automatique, et de ne plus l’écrire en dur :

R markdown

Le rendu :

R markdown

Ne pas exécuter le code d'un chunk

Dans certaines situations,  il peut arriver que l’on ne souhaite pas exécuter le code d’un chunk. Par exemple, vous pouvez avoir un code qui calcule la moyenne d’une variable, et sur certains jeux de données cette variable n’existe pas. Plutôt que de supprimer le chunk, vous pouvez simplement faire en sorte qu’il ne soit pas exécuté (ce qui entraînerait une erreur lors du passage du .Rmd en .html ou .docx). Pour cela, on utilise l’option “eval=FALSE“, que vous pouvez coupler avec echo=FALSE pour que même le code n’apparaisse pas.

R markdown

Supprimer tous les messages et les warnings

Par exemple, lors du chargement des packages, R renvoie souvent des informations, qui sont intéressantes, mais que l’on ne souhaite pas forcément voir apparaître dans le rapport généré, comme cela, par exemple :

R markdown

Dans ce cas là, on peut utiliser “message=FALSE“, et “warning=FALSEdans le chunck set-up :

R markdown

Afficher un etable des matières dans le rapport dynamique

Si on utilise des titres et des sous titres dans le document Rmarkdown, on peut vouloir afficher la table des matières (ou Table Of Contents en anglais) dans le rapport dynamique qui sera généré. Pour cela, on ajoute, dans l’en-tête du document Rmarkdown “toc=TRUE” et on gère le niveau de détail de la table des matières par toc_depth, comme cela :

R markdown

Insérer des références bibliographiques

J’ai écrit tout un article qui explique en détail comment le faire en utilisant Mendeley. Cliquez ici pour le consulter.

Mettre des résultats en cache

Si le code d’un chunk prend beaucoup de temps de calcul, il peut être intéressant de ne pas relancer ce calcul à chaque fois qu’on génère le rapport dynamique. Par exemple, vous avez vu une faute d’orthographe dans votre rapport .docx, vous la corrigez sur le document Rmarkdown,
et si un chunk prend 20 minutes de calcul, c’est un peu, voir carrément pénible ! Dans cette situation, vous pouvez utiliser l’option “cache=TRUE“. Lors de la première génération du document, le résultat du chunk sera mis en cache, et ce cache sera utilisé lors de la génération des rapports suivants.

Pour bien comprendre, vous pouvez générer deux fois de suite un document contenant le chunk suivant :

R markdown

Améliorer l'affichage des tables

Dans le premier article, je vous conseillais la fonction “kable” du package “knitr” pour afficher un tableau de données. Si vous générez votre rapport dynamique en format html, vous pouvez utiliser le package “kableExtra” pour améliorer l’affichage de cette table. Voici un exemple de ce qu’il est possible d’obtenir:

R markdown

Pour plus de détails, consultez la vignette du package.

 

Affichage d'une table de données paginée

Toujours lorsque votre rapport dynamique est destiné à un format en html, il est possible d’obtenir une table paginée en utilisant la fonction “paged_table” du package “rmarkdown”.

library(rmarkdown)
paged_table(iris) 

Utilisez des modèles Rmarkdown

Il existe des modèles prédéfinis de documents en Rmarkdown. Ces modèles permettent de rédiger directement des documents avec un certain format. Par exemple, en installant le package “rticles”, vous aurez accès à des modèles Rmarkdown pour rédiger vos articles sous le format d’une vingtaine de journaux scientifiques. Le choix du modèle se fait lors de la création d’un nouveau document Rmarkdown, au niveau de l’option “From Template”.

R markdown

Et vous ? Avez vous un 11ème élément d’amélioration à me suggérer ? Si oui, faites le en commentaire et je le rajouterai à cette liste. En attendant, j’espère que ces 10 éléments permettront au plus grand nombre d’améliorer leurs documents dynamiques.

Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee

 

Crédits photos : geralt

Poursuivez votre lecture

8 réponses

  1. Vraiment grand merci Madame car ce sujet (R markdown) m’intéresse particulierement. L’article est bien détaillé et facilement comprehensif. Mais réellement j’ai toujours des difficultés. Je souhaiterais si possible de faire une vidéo pour associée à l’article.

  2. Bonjour,
    Je débute avec RMarkdown, et lorsque je veux faire apparaitre mes figures dans un document word, il y a automatiquement un saut de page entre mon titre et ma page de figure. Pourriez vous m’aider ?
    Merci d’avance pour votre aide

    1. Bonjour Camille,
      Malheureusement non je n’ai pas de réponse, je ne vois pas ce qui peut entrainer ce saut de page. Navrée de ne pas pouvoir vous aider.

      1. Bonjour Camille,
        vous pouvez essayer d’ajouter out.width=”75%” dans l’intitulé du chunk, comme cela : “`{r, fig.align=’center’, out.width=”75%”}, si cela n’est pas suffisant, essayez 50%. En espérant que ça marche!

  3. On peut ajouter une section params dans l’en-tête :
    title: “VCFcomparaison”
    params:
    setdir: “setdir”
    setlib: “setlib”

    output:

    R -e “library(‘rmarkdown’,lib.loc=’packageR/’); rmarkdown::render(‘.Rmd’,output_file=’.html’, params = list(setdir = ”, setlib=”))”

    On y fait référence avec params$setdir dans les chunks.

  4. Bonjour, superbe article. Existe-t-il un moyen d’avoir une 1ère colonne ou 1ère ligne “figée” à la manière des volets d’Excel, avec paged_table par exemple, ou autre ?
    Merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.