在 Rstudio 0.96 中的 R Markdown 文件上按“Knit HTML”时会运行哪些命令?
我的动机是,当我在另一个文本编辑环境中时,我可能想运行相同的命令,或者我可能想将命令合并到一个更大的makefile
.
在 Rstudio 0.96 中的 R Markdown 文件上按“Knit HTML”时会运行哪些命令?
我的动机是,当我在另一个文本编辑环境中时,我可能想运行相同的命令,或者我可能想将命令合并到一个更大的makefile
.
所以现在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.rmd
R markdown 文件的名称在哪里。请注意,我对 browseURL 行不是 100% 有信心(因此我的问题是关于在 Web 浏览器中打开文件)。
好处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')
放入Sys.sleep(30)
一个块,你会清楚地看到 RStudio 调用了哪些命令。基本上他们是
library(knitr); knit()
获取降价文件;第二步会在下一版本的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 之间的关系。
简而言之,来自knitr 的非常简单的命令行方法:
R -e "rmarkdown::render('knitr_example.Rmd')"
这需要rmarkdown
安装install.packages(rmarkdown)
并且pandoc已安装(显然它与 Rstudio 一起提供,有关更多详细信息,请参阅knitr in a knutshell)。
到目前为止,当我使用它时,它很好地将所有绘图放在 HTML 文件中,而不是作为图形目录中的图像,并清理任何中间文件(如果有);就像 RStudio 中的编译一样。
看来您应该调用 rmarkdown::render() 而不是 knitr::knit2html() 因为 a.rmd 似乎是 R Markdown v2 文档。