2015-03-04 2 views
1

В следующем MWE на компьютере под управлением Windows 7 R 3.12knit2html поставил .md в указанном пути

Я пытаюсь создать файл мД из RMD. Он создает файл md в моем рабочем каталоге, а не в указанном пути. Вместо этого файл HTML создается по указанному пути. Как я могу создать md в deleteMe/my.md?

## Создать минимальный RMD:

dir.create("deleteMe") 

cat("\nminimal", file = "deleteMe/my.Rmd") 

## вязать его мкр

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, хотя, как это для создания README.md, что я не хочу, чтобы YAML появляться в.

ответ

1

Глядя на источник knit2html(), вы можете увидеть, что, когда он называет knit(), это Безразлично 't указать 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() - может быть запрос тянуть в порядке

Смежные вопросы