我可以使用RMarkdown {.tabset}
#### Heading {.tabset}
##### Subheading 1
```{r, echo=F}
df[[1]]
```
这会在预览窗格中生成带有指定图形的单个选项卡(df
是图表列表,调用df[[i]]
生成图形)(在RStudio中内嵌所有图形)。
我可以使用for循环生成标签。
```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
cat("##### ",q$Subheading[i],"\n")
}
```
这会产生所需的输出 - 在子标题栏中带有名称的标签。
但是,我一直试图使用for循环自己生成图形,类似于我手动编码时的方式。
扩展上面的内容,我尝试生成产生初始输出的markdown,但是无法生成绘图(在内联降价和预览中)。
```{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')
}
```
也许我错过了关于降价的更好的观点?我使用cat
(甚至没有)
我更喜欢RMarkdown解决方案,但其他解决方案同样受欢迎。
答案 0 :(得分:5)
我玩了一下,找到了解决方案。您必须在beforeRender
代码块中使用print
...
asis
作为解释,```{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')
}
```
命令与cat
一起生成较低级别标题的降价代码,然后打印ggplot图。由于我们在父标题中使用了`{.tabset},因此它会在不同的标签中创建绘图。
答案 1 :(得分:1)
在for循环中添加plot.new()和dev.off()可以解决在最后一个选项卡中添加所有图形的问题。请参阅完整的解决方案here。