创建参数R降价文档?

sve*_*ski 11 markdown r pandoc knitr

我想迭代我的R markdown文件中的结果集列表.当我生成输出时,我想要包含一些文本,例如带有结果集名称的标题.

我发现一个hacky解决方案是直接在这样的文档中硬编码html输出

## All results

```{r loopResults, echo=FALSE, results='asis'}
results = list(result1 = data.frame(x=rnorm(3), y=rnorm(3)), result2=data.frame(x=rnorm(3), y=rnorm(3)))

for(res in names(results)) {
  cat(paste("<h3>Results for: ", res, "</h3>>"))

  plot(results[[res]]$x, results[[res]]$y)
}
Run Code Online (Sandbox Code Playgroud)

这似乎不是正确的做事方式,特别是因为我想在时间通过pandoc创建PDF文档,并且必须更改硬编码表达式.(我目前有便利功能,如h3(文本,类型)).

有没有更好的方法呢?

Ram*_*ath 7

我会结合使用brewknitr实现这一点.我会创建一个doc.brew看起来像这样的brew模板

<% for (res in names(results)) { -%>

### Results for: <%= res %>

```{r}
plot(results[["<%= res %>"]]$x, results[["<%= res %>"]]$y)
```

<% } %>
Run Code Online (Sandbox Code Playgroud)

您现在可以运行以下代码来获得所需的输出

results = list(
  result1 = data.frame(x=rnorm(3), y=rnorm(3)), 
  result2=data.frame(x=rnorm(3), y=rnorm(3))
)
brew::brew('doc.brew', 'doc.Rmd')
knit2html('doc.Rmd')
Run Code Online (Sandbox Code Playgroud)