71

在 Rstudio 0.96 中的 R Markdown 文件上按“Knit HTML”时会运行哪些命令?

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

4

4 回答 4

64

基本脚本

所以现在Rmarkdown包已经发布了,这里有一些代码将 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.rmdR markdown 文件的名称在哪里。请注意,我对 browseURL 行不是 100% 有信心(因此我的问题是关于在 Web 浏览器中打开文件)。

markdownToHTML 选项

好处markdownToHTML是在如何创建 HTML 方面有很多选择(请参阅 参考资料?markdownHTMLOptions)。因此,例如,如果您只想要一个没有所有标头信息的代码片段,您可以编写:

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

或者,如果您不喜欢硬换行(即,在 Markdown 源代码中有单个手动换行符时插入换行符),您可以省略 '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'))

生成文件

这也可以全部添加到生成文件中,可能使用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=''))"

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

于 2012-06-10T13:30:27.713 回答
43

放入Sys.sleep(30)一个块,你会清楚地看到 RStudio 调用了哪些命令。基本上他们是

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

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


2019/09/17 更新:上述答案适用于 RStudio v0.96(2012 年)。现在 R Markdown 是通过 编译的rmarkdown::render(),它使用 Pandoc 而不是退休的 R 包markdown。有关更多详细信息,请参阅R Markdown、Knitr、Pandoc 和 Bookdown 之间的关系

于 2012-05-18T14:16:07.293 回答
28

简而言之,来自knitr 的非常简单的命令行方法:

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

这需要rmarkdown安装install.packages(rmarkdown)并且pandoc已安装(显然它与 Rstudio 一起提供,有关更多详细信息,请参阅knitr in a knutshell)。

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

于 2015-06-26T00:36:05.827 回答
4

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

于 2016-07-06T23:26:05.383 回答