6

我无法为 knit2html 或其相关函数生成的 html 指定输出路径。我想在调用 knit2html() 时指定“outfile”,但出现错误,

knit2html 中的错误(输入 =“test.Rmd”,输出 =“test-abcd.html”):
找不到对象“输出文件”

'output' 是 markdownToHTML 的一个参数,我认为它应该可以工作。我在使用“outfile”的源代码中找不到任何地方。

这应该重现我的经验。

library(knitr)
library(markdown)

# a minimal example
writeLines(c("```{r hello-random, echo=TRUE}", "rnorm(5)", "```"), 
           "test.Rmd")

# this works and outputs to test.html
knit2html(input = "test.Rmd")

# this generates the above error
knit2html(input   = "test.Rmd", 
          output  = "test-abcd.html")

# breaking it down into two steps works in this simple case,
# but not in my application.  trying to diagnose that difference currently
knit("test.Rmd")    
markdownToHTML("test.md", 
               output="test-abcd.html")

相关的版本信息可能有用吗?

sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: x86_64-pc-linux-gnu (64-bit)

other attached packages:
[1] plyr_1.8         knitr_1.2        digest_0.6.3     markdown_0.5.4   xtable_1.7-1     reshape2_1.2.2   scales_0.2.3     ggplot2_0.9.3.1  data.table_1.8.8
4

1 回答 1

3

首先,感谢您提出的非常清晰且可重复的问题。如果你看一下knit2html函数源代码,你就可以理解问题所在:

R> knit2html
function (input, ..., envir = parent.frame(), text = NULL, quiet = FALSE, 
    encoding = getOption("encoding")) 
{
    if (is.null(text)) {
        out = knit(input, envir = envir, encoding = encoding, 
            quiet = quiet)
        markdown::markdownToHTML(out, outfile <- sub_ext(out, 
            "html"), ...)
        invisible(outfile)
    }
    else {
        out = knit(text = text, envir = envir, encoding = encoding, 
            quiet = quiet)
        markdown::markdownToHTML(text = out, ...)
    }
}
<environment: namespace:knitr>

如果text参数是NULL(即,如果您提供文件作为输入而不是字符向量),则将给定文件传递给knit函数,并按markdownToHTML以下方式调用函数:

markdown::markdownToHTML(out, outfile <- sub_ext(out, "html"), ...)

因此,在这种情况下,输出文件名是通过用 替换现有文件扩展名生成的 html,您不能提供自己的输出文件名作为参数。

于 2013-04-29T22:06:24.710 回答