什么是R CMD Sweave myfile.rnw的等价物?

R CMD Sweave myfile.rnw等效命令行knitr是什么?

一般的解决scheme(适用于R版本):

 Rscript -e "library(knitr); knit('myfile.Rmd')" 

从R 3.1.0开始, R CMD Sweave已经开始支持非Sweave文档(尽pipe命令名听起来有些奇怪),唯一需要做的就是在文档中指定一个vignette引擎,例如

 %\VignetteEngine{knitr::knitr} 

要在knitr中查看可能的小插曲引擎,请使用

 library(knitr) library(tools) names(vignetteEngine(package = 'knitr')) # "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear" 

我有一个knitme.R脚本:

 library(knitr) render_html() source("hooks.R") # mods to defaults inFile = commandArgs(trailingOnly=TRUE)[1] outFile = commandArgs(trailingOnly=TRUE)[2] knit(inFile,output=outFile) 

所以我可以这样做

 Rscript knitme.R $SOURCE $TARGET 

$SOURCE$TARGET是根据需要而定的。

你也可以把它融入Make ,所以你有一个规则,你所要做的就是:

 make myfile.html 

它会去myfile.Rhtml并生成HTML文件。 调整从.Rnw制作PDF

我使用的是SCons而不是Make,所以我有一个Sconscript文件, 这个文件有点复杂(部分原因是我刚刚开始学习使用SCons,所以它可能有点笨拙)

 env=Environment() bld = Builder(action = '/usr/bin/Rscript knitme.R $SOURCE $TARGET', suffix='.html', src_suffix='Rhtml') env.Append(BUILDERS = {'Knit' : bld}) env.Knit(source='test.Rhtml',target='test.html') 

那么我需要做的是:

 scons test.html 

如果test.Rhtml发生了变化,我会从test.Rhtml构buildtest.html

这是一个Sconstruct文件的一部分,它构build了一个完整的Web站点,并根据各种其他依赖项将其复制到一个服务器上。

现在漂stream题外话…

要添加到其他答案,如果你想编织/渲染文件,并在一行中打开输出,你可以使用:

 Rscript -e "rmarkdown::render('file.Rmd')" & open file.pdf 

我宁愿把它全部放在一行中,因为作为可重用的Vim命令运行起来更简单。

如果你想使用你的系统的非默认值,你也可以用特定的应用程序来replaceopen 。 我倾向于使用这个,如果我在Windows上,并希望使用苏门答腊来覆盖当前打开的PDF输出(所以我不必记得每次closures它)。

 R CMD knit file.Rmd 

是直接等价于R CMD Sweave file.Rmd

最近,在这种肮脏的工作中,还有增强的function。 对于幻灯片,我一直使用Rmarkdown YAML头来指定预期的输出格式,命令行是基本的,比如

 R -e "library(rmarkdown); render(\"file.Rmd\")"