Создавайте файлы Rmd динамически на основе входных данных для работы

Я хотел бы динамически создавать и связывать файлы .Rmd и отображать результаты анализа в браузере. Я использую knitr и knit2html для этого. В настоящее время я использую следующий подход:

myHTMLsummary <- function(data,x) {

  con <- paste0(getwd(),"/myHTMLSummary.Rmd")
  writeLines ("

Data frame summary
========================================================

Summary:
```{r,echo=FALSE}
summary(data[x])
```",con)

  knit2html(con,quiet=TRUE)

  if (interactive()) browseURL(paste0(getwd(),"/myHTMLSummary.html"))  
}

myHTMLsummary(iris,"Sepal.Length")

Существуют ли более эффективные способы динамического создания и связывания .Rmd файлов, или это подход, который все используют?

Примечание. Было бы неплохо иметь вкладку вывода HTML в Rstudio, чтобы отображать результаты такой функции напрямую (а не во внешнем браузере). Может быть, кто-то знает, как отправить результаты на вкладку «Помощь»?


person Tomas Greif    schedule 26.07.2013    source источник
comment
Как насчет того, чтобы попробовать rapport?   -  person daroczig    schedule 26.07.2013
comment
Этот вопрос кажется связанным.   -  person CL.    schedule 01.05.2016


Ответы (1)


Возможно, это не очень хороший пример — я не думаю, что writeLines() здесь полезен. Я имею в виду, что содержимое на самом деле представляет собой фиксированную строку символов, так почему бы просто не сохранить ее в myHTMLSummary.Rmd заранее? Тогда вам понадобится только

myHTMLsummary <- function(data, x) {
  knit2html("myHTMLSummary.Rmd", quiet=TRUE)
  if (interactive()) browseURL(file.path(getwd(), "myHTMLSummary.html"))  
}

myHTMLsummary(iris, "Sepal.Length")

Я думаю, что вы действительно имеете в виду динамическое создание фрагментов кода, т.е. содержимое исходного документа не является фиксированным. В этом случае см. примеры 075 и 021 в репозитории knitr-examples. Обратите внимание, что это не единственные подходы. Вы можете использовать любые стратегии манипулирования строками для создания исходного документа.

Что касается вопроса о RStudio, вы должны отправить запрос на добавление функции его разработчикам. На данный момент я не думаю, что в RStudio можно просматривать произвольные HTML-документы.

person Yihui Xie    schedule 26.07.2013