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)
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构建整个网站并基于各种其他依赖项将其复制到服务器的文件的所有部分.
现在离题了......