web-dev-qa-db-fra.com

Comment convertir R Markdown en HTML? C'est-à-dire, que fait "Knit HTML" dans Rstudio 0.96?

Quelles commandes sont exécutées lorsque vous appuyez 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 makefile plus grand.

64
Jeromy Anglim

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() pour obtenir le fichier de démarque;
  2. RStudio a des fonctions internes pour convertir le démarque en HTML;

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

39
Yihui Xie

Script de base

Alors maintenant que le package R markdown a été publié , voici du code pour répliquer 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 démarque R. Notez que je ne suis pas sûr à 100% de la ligne BrowseURL (d'où ma question ici sur ouverture de fichiers dans un navigateur Web ).

options de markdownToHTML

La bonne chose à propos de markdownToHTML est qu'il existe des tas d'options dans la façon dont le code HTML est créé (voir ?markdownHTMLOptions). Ainsi, 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 l'habillage dur (c'est-à-dire l'insertion de sauts de ligne lorsqu'il y a des sauts de ligne manuels uniques 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 makefile en utilisant peut-être Rscript -e (Par exemple, quelque chose comme ça ). Voici un exemple de makefile de base que j'ai mis en place, où test indique que le fichier rmd est appelé 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émarque préférées: c'est-à-dire options=c('use_xhtml', 'base64_images')

62
Jeromy Anglim

Méthode de ligne de commande très simple de knitr en bref :

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

Cela nécessite que rmarkdown soit installé avec install.packages(rmarkdown) et que pandoc soit installé (apparemment, il est fourni avec Rstudio, voir knitr en bref pour plus de détails).

Jusqu'à présent, lorsque j'ai utilisé cela, il met 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.

26
Harry

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

3
Shicheng Guo