web-dev-qa-db-ger.com

Wie konvertiere ich R Markdown nach HTML? D. h., Was macht "Knit HTML" in Rstudio 0.96?

Welche Befehle werden ausgeführt, wenn Sie in einer R Markdown-Datei in Rstudio 0.96 auf "HTML stricken" klicken?

Meine Motivation ist, dass ich den gleichen Befehl ausführen möchte, wenn ich mich in einer anderen Textbearbeitungsumgebung befinde, oder den Befehl in einem größeren makefile kombinieren möchte.

64
Jeromy Anglim

Wenn Sie Sys.sleep(30) in einen Block einfügen, sehen Sie deutlich, welche Befehle von RStudio aufgerufen werden. Im Grunde sind sie

  1. library(knitr); knit() um die Markdown-Datei zu erhalten;
  2. RStudio verfügt über interne Funktionen zum Konvertieren von Abschriften in HTML.

Der zweite Schritt wird in der nächsten Version des Pakets markdown transparenter. Derzeit können Sie knitr::knit2html('your_file.Rmd') verwenden, um eine ähnliche HTML-Datei abzurufen, wie Sie sie von RStudio erhalten.

39
Yihui Xie

Basic Script

Nachdem das R markdown -Paket veröffentlicht wurde , folgt hier ein Code, mit dem die Funktionen von Knit in HTML repliziert werden können.

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 

dabei ist test.rmd der Name Ihrer R-Abschriftdatei. Beachten Sie, dass ich in Bezug auf die browseURL-Zeile nicht 100% sicher bin (daher hier meine Frage zu Öffnen von Dateien in einem Webbrowser ).

markdownToHTML-Optionen

Das Gute an markdownToHTML ist, dass es unzählige Möglichkeiten gibt, wie der HTML-Code erstellt wird (siehe ?markdownHTMLOptions). Wenn Sie beispielsweise nur ein Codefragment ohne alle Header-Informationen benötigen, können Sie Folgendes schreiben:

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

oder wenn Sie keinen Zeilenumbruch mögen (d. h. wenn die Abschriftenquelle einzelne manuelle Zeilenumbrüche enthält, können Sie die Option 'hard_wrap' weglassen).

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

Makefile

Dies könnte auch alles zu einem Makefile hinzugefügt werden, möglicherweise unter Verwendung von Rscript -e (Z. B. so ähnlich ). Hier ist ein einfaches Beispiel-Makefile, das ich zusammengestellt habe, wobei test angibt, dass die rmd-Datei test.rmd Heißt.

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=''))"

Das Makefile verwendet meine bevorzugten Markdown-Optionen: d. H. options=c('use_xhtml', 'base64_images')

62
Jeromy Anglim

Sehr einfache Kommandozeilenmethode von knitr in a knutshell :

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

Dies setzt voraus, dass rmarkdown mit install.packages(rmarkdown) installiert ist und dass pandoc installiert ist (anscheinend mit Rstudio, siehe knitr in a knutshell für mehr Details).

Wenn ich dies bisher verwendet habe, werden alle Diagramme in der HTML-Datei und nicht als Bilder in einem Figurenverzeichnis abgelegt und etwaige Zwischendateien werden bereinigt. Genau wie das Kompilieren in RStudio.

26
Harry

Anscheinend sollten Sie rmarkdown :: render () anstelle von knitr :: knit2html () aufrufen, da a.rmd ein R Markdown v2-Dokument zu sein scheint.

3
Shicheng Guo