使用knitr / rmarkdown将R脚本集合编译为HTML

时间:2015-01-21 15:57:44

标签: r rstudio knitr r-markdown

我在目录中有一个R脚本集合,并希望将它们全部编译 对于HTML,我可能会手动使用R Studio Compile Notebook,但可以控制CSS样式。

每个文件都有一个最小的YAML标题和一些标记,如下所示,我不想在带有块选项的脚本中引入额外的复杂性,除非绝对必要。

#' ---
#' title: "Tests for association in two-way tables"
#' author: "Michael Friendly"
#' ---

#' ## Load and examine data
library(vcdExtra)
data(SexualFun)
SexualFun                # show the table
...

我对使用哪种工具以这种方式编译单个文件感到困惑--- spin | knit2htmlmarkdownToHTML等等。一旦我做对了,我可以使用apply()之类的内容为我的文件列表files <- list.files(pattern="*.R$")执行此操作。

这是我尝试编译一个文件的内容,还有一些额外的控制权:

library(knitr)
options(markdown.HTML.options = markdownHTMLOptions(stylesheet = "markdown.css"))
knit_theme$set("seashell")
opts_chunk$set(fig.align="center")
spinone <- function(file, outdir="output/") {
    fn <- knitr:::sans_ext(file)
    #+ suppressmessages, include=FALSE
    knitr::opts_chunk$set(warning = FALSE, message = FALSE)
    spin(file)
    Rmd <- knitr:::sub_ext(file, "Rmd")
    out <- paste0(outdir, knitr:::sub_ext(file, "html"))
    knit2html(Rmd, output=out)
}

但它无法正常工作。我明白了:

> spinone("sexfun-chisq.R")
processing file: sexfun-chisq.Rmd
  ...
  |.................................................................| 100%
  ordinary text without R code

output file: sexfun-chisq.md

Error in readLines(if (is.character(input2)) { : 
  cannot open the connection
In addition: Warning message:
In readLines(if (is.character(input2)) { :
  cannot open file 'sexfun-chisq.Rmd': No such file or directory

实际上,sexfun-chisq.html已生成,但它没有YAML标题,也没有使用我的样式选项。

1 个答案:

答案 0 :(得分:1)

使用spin(file, knit = FALSE)以便不删除Rmd文件(请参阅precious中的?spin参数)。