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