什么是`R CMD Sweave myfile.rnw`的编织器等价物?

Jer*_*lim 57 r sweave knitr

什么是命令行编织器相当于R CMD Sweave myfile.rnw

Mai*_*ura 65

一般解决方案(无论R版本如何都有效):

Rscript -e "library(knitr); knit('myfile.Rmd')"
Run Code Online (Sandbox Code Playgroud)

从R 3.1.0 R CMD Sweave开始,已开始支持非Sweave文档(虽然命令名称听起来有点奇怪),您唯一需要做的就是在文档中指定一个晕影引擎,例如

%\VignetteEngine{knitr::knitr}
Run Code Online (Sandbox Code Playgroud)

要查看knitr中可能的晕影引擎,请使用

library(knitr)
library(tools)
names(vignetteEngine(package = 'knitr'))
# "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear"
Run Code Online (Sandbox Code Playgroud)

  • 有关`R CMD foo`的讨论,请参阅https://stat.ethz.ch/pipermail/r-devel/2011-November/062704.html; 不幸的是,R核心的响应(几乎总是)你可以使用`Rscript -e`,这让我很烦恼; 我有一个shell脚本https://github.com/yihui/knitr/blob/master/inst/bin/knit,我在`〜/ bin /`下创建了一个符号链接,所以通常我只调用`knit foo.Rnw `在终端窗口中(当然不适用于Windows) (10认同)
  • 什么这么俗气?如果没有真正内置到R中,你就无法做得更好.我的Makefiles有`$(RSCRIPT)-e"库(knitr); knit(\"$*.\nRnw \")"` (5认同)
  • 请注意,在进行此更改后,我需要添加`require(methods)`以便正确显示晶格图; 因为[显然Rscript默认不加载方法包](http://ucfagls.wordpress.com/2011/06/08/stratigraphic-diagrams-using-analogue/). (3认同)
  • 辉煌.在这个特殊的例子中,我还在使用LaTeX,而不是R Markdown,所以它是`Rscript -e"库(knitr); knit('myfile.rnw')"` (2认同)

Spa*_*man 23

我有一个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)
Run Code Online (Sandbox Code Playgroud)

所以我可以做

Rscript knitme.R $SOURCE $TARGET
Run Code Online (Sandbox Code Playgroud)

在哪里$SOURCE$TARGET按要求.

你也可以把它整合到一起Make,所以你有一个规则,你所要做的就是:

make myfile.html
Run Code Online (Sandbox Code Playgroud)

它会转到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')
Run Code Online (Sandbox Code Playgroud)

然后我需要做的就是:

scons test.html
Run Code Online (Sandbox Code Playgroud)

如果已经改变,我会test.html建立起来.test.Rhtmltest.Rhtml

这是Sconstruct构建整个网站并基于各种其他依赖项将其复制到服务器的文件的所有部分.

现在离题了......