Come convertire R Markdown in HTML? Cioè, cosa fa “Knit HTML” in Rstudio 0.96?

Quali comandi vengono eseguiti quando si preme “Knit HTML” su un file R Markdown in Rstudio 0.96?

La mia motivazione è che potrei voler eseguire lo stesso comando quando sono in un altro ambiente di modifica del testo o potrei voler combinare il comando in un makefile più grande.

Metti Sys.sleep(30) in un chunk e vedrai chiaramente quali comandi sono chiamati da RStudio. Fondamentalmente sono

  1. library(knitr); knit() library(knitr); knit() per ottenere il file markdown;
  2. RStudio ha funzioni interne per convertire markdown in HTML;

Il secondo passo sarà più trasparente nella prossima versione del pacchetto markdown . Attualmente puoi usare knitr::knit2html('your_file.Rmd') per ottenere un file HTML simile a quello che ti offre RStudio.

Script di base

Così ora che è stato rilasciato il pacchetto markdown R , ecco un codice per replicare le funzionalità di Knit to 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 

dove test.rmd è il nome del tuo file R markdown. Nota che non sono sicuro al 100% della linea browseURL (da qui la mia domanda sull’apertura dei file in un browser web ).

markdownToHTML Opzioni

La cosa buona di markdownToHTML è che ci sono un sacco di opzioni su come viene creato l’HTML (vedi ?markdownHTMLOptions ). Quindi, per esempio, se vuoi solo un frammento di codice senza tutte le informazioni di intestazione, potresti scrivere:

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

o se non ti piace l’involucro duro (cioè, inserendo interruzioni di riga quando ci sono interruzioni di riga singole manuali nell’origine markdown), puoi omettere l’opzione ‘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

Questo potrebbe anche essere aggiunto a un makefile, magari usando Rscript -e (es. Qualcosa del genere ). Ecco un makefile di esempio di base che ho messo insieme, dove test indica che il file rmd è chiamato 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=''))" 

Il makefile usa le mie opzioni di markdown preferite: ie, options=c('use_xhtml', 'base64_images')

Molto semplice il metodo da riga di comando di knitr in un knutshell :

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

Ciò richiede che rmarkdown sia installato con install.packages(rmarkdown) e che pandoc sia installato (apparentemente viene fornito con Rstudio, vedere knitr in un knutshell per maggiori dettagli).

Finora, quando l’ho usato, inserisce tutti i grafici nel file HTML anziché come immagini in una directory di figure e pulisce eventuali file intermedi, se presenti; proprio come fa la compilazione in RStudio.

Sembra che dovresti chiamare rmarkdown :: render () invece di knitr :: knit2html () perché a.rmd sembra essere un documento R Markdown v2.