指定knit2html的输出路径

时间:2013-04-29 20:35:42

标签: r knitr r-markdown

我在为knit2html或其相关函数生成的html指定输出路径时遇到问题。我想在knit2html()的调用中指定'outfile',但是我得到了错误,

  

knit2html出错(input =“test.Rmd”,output =“test-abcd.html”):
  找不到对象'outfile'

'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

1 个答案:

答案 0 :(得分: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替换现有文件扩展名来生成的,并且您不能提供自己的输出文件名作为参数。