在以下MWE上运行R 3.12的Windows 7计算机
我正在尝试从Rmd创建一个md文件。它在我的工作目录中创建md文件,而不是在指定的路径中。 HTML文件是在指定的路径中创建的。如何在deleteMe/my.md
中创建md?
##创建一个最小的Rmd:
dir.create("deleteMe")
cat("\nminimal", file = "deleteMe/my.Rmd")
##将其编织为md
knitr::knit2html(input = "deleteMe/my.Rmd", output = "deleteMe/my.md")
##如果我将工作目录设置为deleteME它是正确的但我不喜欢在函数中使用setwd
setwd("deleteMe")
knitr::knit2html(input = "deleteMe/my.Rmd", output = "deleteMe/my.md")
我意识到它是knit2html
,而不是knit2md
,但它也会创建一个md。如果这是错误的方法,我会接受其他函数/包/方法。我不想要一个yaml,因为这是一个我不希望yaml出现的README.md创建。
答案 0 :(得分:1)
查看knit2html()
的来源,您可以看到,当它调用knit()
时,它并未指定output=
。这意味着knit()
假设您希望在工作目录中创建.md(因此当您更改工作目录时它会起作用)。
创建knit2html()
的新版本使其有效:
knit2html2 <- function (input, output = NULL, ..., envir = parent.frame(),
text = NULL, quiet = FALSE, encoding = getOption("encoding"))
{
#Specify output path in knit()
out = knit(input, output, text = text, envir = envir, encoding = encoding,
quiet = quiet)
if (is.null(text)) {
output = knitr:::sub_ext(if (is.null(output) || is.na(output))
out
else output, "html")
markdown::markdownToHTML(out, output, encoding = encoding,
...)
invisible(output)
}
else markdown::markdownToHTML(text = out, ...)
}
将output=
传递给knit()
似乎是合理的 - 也许拉出请求是有序的