Comment convertir R Markdown en HTML? Ie, qu’est-ce que “Knit HTML” fait dans Rstudio 0.96?

Quelles commandes sont exécutées en appuyant sur “Knit HTML” sur un fichier R Markdown dans Rstudio 0.96?

Ma motivation est que je pourrais vouloir exécuter la même commande quand je suis dans un autre environnement d’édition de texte ou je pourrais vouloir combiner la commande dans un plus grand makefile .

Mettez Sys.sleep(30) dans un morceau et vous verrez clairement quelles commandes sont appelées par RStudio. Fondamentalement, ils sont

  1. library(knitr); knit() library(knitr); knit() pour obtenir le fichier de démarquage;
  2. RStudio dispose de fonctions internes pour convertir les balises au format HTML;

La deuxième étape sera plus transparente dans la prochaine version du package de markdown . Actuellement, vous pouvez utiliser knitr::knit2html('your_file.Rmd') pour obtenir un fichier HTML similaire à celui knitr::knit2html('your_file.Rmd') par RStudio.

Script de base

Donc, maintenant que le package R markdown a été publié , voici un code pour reproduire les fonctionnalités de Knit en HTML.

 require(knitr) # required for knitting from rmd to md require(markdown) # required for md to html knit('test.rmd', 'test.md') # creates md file markdownToHTML('test.md', 'test.html') # creates html file browseURL(paste('file://', file.path(getwd(),'test.html'), sep='')) # open file in browser 

test.rmd est le nom de votre fichier de test.rmd R. Notez que je ne suis pas sûr à 100% de la ligne browseURL (d’où ma question sur l’ ouverture de fichiers dans un navigateur Web ).

Options markdownToHTML

La bonne chose à propos de markdownToHTML est qu’il y a des tas d’options dans la façon dont le HTML est créé (voir ?markdownHTMLOptions ). Par exemple, si vous voulez juste un fragment de code sans toutes les informations d’en-tête, vous pouvez écrire:

 markdownToHTML('test.md', 'test.html', options='fragment_only') 

ou si vous n’aimez pas le «wrapping» dur (c.-à-d. en insérant des sauts de ligne lorsqu’il n’y a qu’un seul saut de ligne manuel dans la source de démarque), vous pouvez omettre l’option «hard_wrap».

 # The default options are 'hard_wrap', 'use_xhtml', # 'smartypants', and 'base64_images'. markdownToHTML('test.md', 'test.html', options=c('use_xhtml', 'base64_images')) 

Makefile

Cela pourrait également être ajouté à un Rscript -e peut-être en utilisant Rscript -e (par exemple, quelque chose comme ça ). Voici un exemple de fichier de base que j’ai mis en place, où test indique que le fichier test.rmd s’appelle test.rmd .

 RMDFILE=test html : Rscript -e "require(knitr); require(markdown); knit('$(RMDFILE).rmd', '$(RMDFILE).md'); markdownToHTML('$(RMDFILE).md', '$(RMDFILE).html', options=c('use_xhtml', 'base64_images')); browseURL(paste('file://', file.path(getwd(),'$(RMDFILE).html'), sep=''))" 

Le makefile utilise mes options de démarquage préférées: par exemple, options=c('use_xhtml', 'base64_images')

Méthode de ligne de commande très simple à partir de knot dans une coquille :

 R -e "rmarkdown::render('knitr_example.Rmd')" 

Cela nécessite que rmarkdown soit installé avec install.packages(rmarkdown) et que ce pandoc soit installé (apparemment, il est fourni avec Rstudio, voir knitr dans une boîte pour plus de détails).

Jusqu’à présent, lorsque je l’ai utilisé, il place bien tous les tracés dans le fichier HTML plutôt que sous forme d’images dans un répertoire de figures et nettoie tous les fichiers intermédiaires, le cas échéant; tout comme la compilation dans RStudio.

Il semble que vous devriez appeler rmarkdown :: render () au lieu de knitr :: knit2html () car a.rmd semble être un document R Markdown v2.