根据功能输入动态创建Rmd文件

时间:2013-07-26 11:53:31

标签: r knitr rstudio

我想在浏览器中动态创建和编织.Rmd个文件并显示分析输出。我正在使用knitrknit2html来执行此操作。目前我正在使用以下方法:

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文件,或者这是任何人使用的方法?

注意:在Rstudio中使用HTML输出选项卡直接显示来自此类功能的结果(而不是在外部浏览器中)将会非常酷。也许有人知道如何将结果发送到帮助标签?

1 个答案:

答案 0 :(得分: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")

我认为你的真正含义是动态构建代码块,即源文档的内容不固定。在这种情况下,请参阅knitr-examples存储库中的示例075和021。请注意,它们不是唯一的方法。您可以使用任何字符串操作策略来创建源文档。

关于RStudio问题,您将向其开发人员file a feature request。目前,我认为不可能在RStudio中预览任意HTML文档。