Как преобразовать R Markdown в HTML? I.e., Что делает "Вязать HTML" в Rstudio 0.96?

Какие команды запускаются при нажатии "Вязать HTML" в файле R Markdown в Rstudio 0.96?

Моей мотивацией является то, что я могу захотеть запустить ту же команду, когда я в другой среде редактирования текста, или мне может понадобиться объединить команду в более крупном makefile.

Ответ 1

Поместите Sys.sleep(30) в чанк, и вы четко увидите, какие команды вызываются RStudio. В основном они

  1. library(knitr); knit(), чтобы получить файл уценки;
  2. RStudio имеет внутренние функции для преобразования уценки в HTML;

Второй шаг будет более прозрачным в следующей версии пакета markdown. В настоящее время вы можете использовать knitr::knit2html('your_file.Rmd'), чтобы получить тот же HTML файл, что и RStudio.


Обновление от 2019/09/17: Приведенный выше ответ относится к RStudio v0.96 (в 2012 году). Теперь R Markdown компилируется через rmarkdown::render(), который использует Pandoc вместо устаревшего R пакета markdown. См. сообщение Отношения между R Markdown, Knitr, Pandoc и Bookdown для получения более подробной информации.

Ответ 2

Основные Script

Итак, теперь, когда пакет R markdown был выпущен, вот некоторый код для репликации функций 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 

где test.rmd - это имя вашего файла разметки R. Обратите внимание, что я не уверен на 100% в строке browseURL (следовательно, мой вопрос здесь о открытии файлов в веб-браузере).

параметры markdownToHTML

Хорошая вещь о markdownToHTML заключается в том, что есть кучи опций в том, как создается HTML (см. ?markdownHTMLOptions). Например, если вы хотите просто фрагмент кода без всей информации заголовка, вы можете написать:

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

или если вам не нравится жесткая упаковка (т.е. вставка разрывов строк при наличии отдельных разрывов строк вручную в источнике уценки), вы можете опустить параметр "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

Это также может быть добавлено в make файл, возможно, используя Rscript -e (например, что-то вроде этого). Вот базовый пример makefile, который я собрал вместе, где test указывает, что файл rmd называется 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=''))"

В make файле используются мои предпочтительные параметры разметки: т.е. options=c('use_xhtml', 'base64_images')

Ответ 3

Очень простой способ командной строки из knitr в двух словах:

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

Для этого необходимо установить rmarkdown с install.packages(rmarkdown) и установить pandoc (видимо, он поставляется с Rstudio, см. knitr в скобках для более подробной информации).

До сих пор, когда я использовал это, он красиво помещает все графики в HTML файл, а не как изображения в каталог фигур и очищает любые промежуточные файлы, если таковые имеются; так же, как компиляция в RStudio.

Ответ 4

Кажется, вам нужно вызвать rmarkdown:: render() вместо knitr:: knit2html(), потому что a.rmd является документом R Markdown v2.