如何将R Markdown转换为HTML?即,"编织HTML"在R96 0.96中做了什么?

Jer*_*lim 66 r rstudio knitr r-markdown

在Rstudio 0.96中的R Markdown文件上按"Knit HTML"时会运行什么命令?

我的动机是,当我在另一个文本编辑环境中时,我可能想要运行相同的命令,或者我可能想要将命令组合成更大的命令makefile.

Jer*_*lim 63

基本脚本

所以现在已经发布R markdown,这里有一些代码可以将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 
Run Code Online (Sandbox Code Playgroud)

test.rmdR markdown文件的名称在哪里.请注意,我对browseURL行没有100%的信心(因此我的问题是关于在Web浏览器中打开文件).

markdownToHTML选项

好消息markdownToHTML是HTML的创建方式有很多选项(参见参考资料?markdownHTMLOptions).因此,例如,如果您只想要一个没有所有标题信息的代码片段,您可以编写:

markdownToHTML('test.md', 'test.html', options='fragment_only')
Run Code Online (Sandbox Code Playgroud)

或者如果您不喜欢硬包装(即,在降价源中有单个手动换行符时插入换行符),则可以省略'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'))
Run Code Online (Sandbox Code Playgroud)

Makefile文件

这也可以全部添加到makefile中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=''))"
Run Code Online (Sandbox Code Playgroud)

makefile使用我首选的降价选项:即, options=c('use_xhtml', 'base64_images')

  • 现在答案是`选项(rstudio.markdownToHTML = ...`https://www.rstudio.com/ide/docs/authoring/markdown_custom_rendering (4认同)
  • 而不是使用markdownToHTML,knitr现在似乎使用rmarkdown :: render(),请参阅此处的注释:https://rforge.net/doc/packages/knitr/knit2html.html (2认同)

Yih*_*Xie 39

放入Sys.sleep(30)一个块,您将清楚地看到RStudio调用的命令.基本上他们是

  1. library(knitr); knit() 得到降价文件;
  2. RStudio具有将markdown转换为HTML的内部函数;

第二步将在下一版本的knitr::knit2html('your_file.Rmd')软件包中更加透明.目前,您可以使用rmarkdown::render()RStudio为您提供类似的HTML文件.

  • 我有一个例子,其中`knit2html("Report.Rmd",encoding ='ISO8859-1')`不会产生与编织按钮相同的html:当我使用`knit2html`时会出现编码问题.但是当我按下编织按钮时,我确实在日志中看到`ISO8859-1`是`encoding`选项.因此,差异应该在于`md`到`html`的转换.编织按钮真的使用`markdownToHTML`吗? (2认同)
  • 请再次阅读我的回答中的第2点. (2认同)

Har*_*rry 27

knithell中knitr非常简单的命令行方法:

R -e "rmarkdown::render('knitr_example.Rmd')"
Run Code Online (Sandbox Code Playgroud)

这需要rmarkdown安装install.packages(rmarkdown)并且安装了pandoc(显然它随Rstudio一起提供,有关详细信息,请参阅knutshell中的knitr).

到目前为止,当我使用它时,它很好地将所有绘图放在HTML文件中,而不是图形目录中的图像,并清理任何中间文件,如果有的话; 就像在RStudio中编译一样.


Shi*_*Guo 6

看来你应该调用 rmarkdown::render() 而不是 knit::knit2html() 因为 a.rmd 似乎是 R Markdown v2 文档。