knit2html把.md放在指定的路径中

时间:2015-03-04 03:56:55

标签: r knitr

在以下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创建。

1 个答案:

答案 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()似乎是合理的 - 也许拉出请求是有序的