如何在R中创建一个包含代码块和带有knitr的文本的循环

Isa*_*tti 22 loops r knitr

我试图弄清楚如何创建一个循环,将一些文本插入到rmarkdown文件中,然后生成与该标题对应的图形或表格.以下是我的工作原理:

for(i in 1:max(month)){
### `r month.name[i]` Air quaility

```{r, echo=FALSE}
plot(airquality[airquality$Month == 5,])
```
}
Run Code Online (Sandbox Code Playgroud)

这个当然只是打印for循环作为文本,如果我用r``环绕for循环,我只会得到一个错误.

我希望代码生成一个如下所示的rmd文件:

可空气质量

情节

六月空气质量

情节

等等等等.有任何想法吗?我不能使用乳胶因为我在工作时他们不让我们下载exe文件,而且我不知道如何使用乳胶.我想制作一个word文档.

jcl*_*use 35

您可以使用将嵌入内置嵌入循环中cat().

注意:您需要设置results="asis"要呈现为markdown的文本.请注意:在\n新行符号前面需要两个空格才能让编织者在出现情节时正确渲染降价.

# Monthly Air Quality Graphs
```{r pressure,fig.width=6,echo=FALSE,message=FALSE,results="asis"}

attach(airquality)
for(i in unique(Month)) {
  cat("  \n###",  month.name[i], "Air Quaility  \n")
  #print(plot(airquality[airquality$Month == i,]))
  plot(airquality[airquality$Month == i,])
  cat("  \n")
}
```
Run Code Online (Sandbox Code Playgroud)

  • 在地球上哪里记录了“ \ n前面的两个空格”? (7认同)
  • 我在 R 笔记本中尝试此解决方案,并获得五月空气质量六月空气质量图,即我的文本输出全部挤在一个块中,然后出现图表。有人知道这是怎么回事吗? (2认同)
  • 一个缺点可能是我们现在无法进行交叉引用。 (2认同)

and*_*har 5

正如这里提到的,您还可以使用pander包:

# Monthly Air Quality Graphs
```{r pressure2, fig.width=6, echo=FALSE, message=FALSE, results="asis"}
library(pander)
for (i in unique(airquality$Month)) {
   # Inserts Month titles
   pander::pandoc.header(month.name[i], level = 3)
   # Section contents
   plot(airquality[airquality$Month == i,])
   # adding also empty lines, to be sure that this is valid Markdown
   pander::pandoc.p('')
   pander::pandoc.p('')
}
```
Run Code Online (Sandbox Code Playgroud)