Вопрос по r – Как конвертировать R Markdown в HTML? Т.е. что делает «Вязать HTML» в Rstudio 0.96?

62

What commands are run when pressing "Knit HTML" on an R Markdown file in Rstudio 0.96?

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

Я немного обновил заголовок на «Как конвертировать R Markdown в HTML» и поместите бит RStudio в конец заголовка, предполагая, что люди, скорее всего, будут прибегать к помощи "как преобразовать уценку R в html". Jeromy Anglim
Я на самом деле не знаю наверняка, но я подозреваю, что это комбинация использования knit для преобразования из R Markdown в Markdown и затем, возможно, использования чего-то вроде pandoc для преобразования в html. Или, возможно, RStudio делает преобразование в HTML. Но pandoc довольно прост в использовании и может быть легко добавлен в make-файл. Dason

Ваш Ответ

4   ответа
26

вязать в скорлупе:

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

Это требуетrmarkdown быть установленным сinstall.packages(rmarkdown) и этоpandoc установлен (видимо, поставляется с Rstudio, см.вязать в скорлупе Больше подробностей).

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

+1! Объединяя это с командой bashfindфактически вы можете отобразить всю структуру каталогов файлов Rmd (например, для курса, который имеет много презентаций / учебных пособий):find . -name '*Rmd' -exec R -e "rmarkdown::render('{}')" \; > /dev/null.
Как псевдоним это? (слишком много цитат?)
Работает ли экранирование внутренних кавычек с обратной косой чертой?
39

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

library(knitr); knit() to get the markdown file; RStudio has internal functions to convert markdown to HTML;

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

Пожалуйста, прочитайте пункт 2 в моем ответе снова.
У меня есть пример для которогоknit2html("Report.Rmd", encoding='ISO8859-1') не выдает тот же html, что и кнопка вязания: при использовании используется проблема с кодировкойknit2html, Однако, когда я нажимаю кнопку вязания, я действительно вижу в журнале, чтоISO8859-1 этоencoding вариант. Таким образом, разница должна лежать вmd вhtml преобразование. Кнопка вязания действительно используетmarkdownToHTML ?
62
Basic Script

рmarkdown package has been releasedВот некоторый код для репликации функций Knit в 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 Options

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

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

или если вам не нравится жесткая переноска (то есть вставка разрывов строк, когда в источнике уценки есть одиночные разрывы строк вручную), вы можете пропустить 'a_ hard_wrap & apos; вариант.

# 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 (например.,что-то вроде этого). Вот основной пример файла сборки, который я собрал, где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=''))"

Makefile использует мои предпочтительные параметры уценки:options=c('use_xhtml', 'base64_images')

Вместо того, чтобы использовать markdownToHTML, теперь кажется, что knitr использует rmarkdown :: render (), см. Примечание здесь:rforge.net/doc/packages/knitr/knit2html.html
теперь ответ даетсяoptions(rstudio.markdownToHTML=... rstudio.com/ide/docs/authoring/markdown_custom_rendering
1

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

Похожие вопросы