R:你如何以程序的方式将图表嵌入到RMarkdown的标签中?

loh*_*hbb 3 r ggplot2 r-markdown

我可以使用RMarkdown来嵌入情节 {.tabset}

#### Heading  {.tabset}
##### Subheading 1
```{r, echo=F}
df[[1]]    
```
Run Code Online (Sandbox Code Playgroud)

这会在预览窗格中生成带有指定图形的单个选项卡(df是图表列表,调用df[[i]]生成图形)(在RStudio中呈现所有图形内联).


我可以使用for循环生成标签.

```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
  cat("##### ",q$Subheading[i],"\n")
}
```
Run Code Online (Sandbox Code Playgroud)

这会产生所需的输出 - 带有子标题列中名称的选项卡.


但是,我试图使用for循环尝试生成图形,类似于我手动编码时的方式.

扩展上面的内容,我尝试生成产生初始输出的降价,但是无法生成绘图(在内联降价和预览中).

```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
  cat("##### ",q$Subheading[i],"\n")
    cat('```{r, echo=F} \n')
    cat("gg0[[",i,"]]\n")
    cat('``` \n')
}
```
Run Code Online (Sandbox Code Playgroud)

也许我错过了关于降价的一个更好的观点?我尝试了各种模式cat(甚至没有)

我更喜欢RMarkdown解决方案,但其他解决方案同样受欢迎.

drm*_*iod 8

我玩了一下,找到了解决方案.你必须printasis代码块中使用...

```{r}
library(ggplot2)
gg0 <- list()
gg0[[1]] <- ggplot(mtcars, aes(mpg, hp)) + geom_point()
gg0[[2]] <- ggplot(mtcars, aes(mpg, disp)) + geom_point()
gg0[[3]] <- ggplot(mtcars, aes(mpg, drat)) + geom_point()

headings <- c('hp','disp','drat')
```

#### Heading  {.tabset}
```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
  cat("##### ",headings[i],"\n")
  print(gg0[[i]])
  cat('\n\n')
}
```
Run Code Online (Sandbox Code Playgroud)

作为解释,该cat命令与results='asis'较低级别标题一起生成降价代码,然后打印ggplot图.由于我们在父标题中使用了`{.tabset},因此它会在单独的标签中创建绘图.