R:如何以程序化的方式将绘图嵌入RMarkdown中的选项卡?

R:如何以程序化的方式将绘图嵌入RMarkdown中的选项卡?,r,ggplot2,r-markdown,R,Ggplot2,R Markdown,我可以使用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)) {

我可以使用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循环来生成图形本身,就像我手动编码时所做的那样

扩展上述内容,我尝试生成生成初始输出的标记,但绘图无法生成(在内联标记和预览中)

也许我错过了一个关于降价的好点?我使用
cat
(甚至不使用)尝试了各种模式


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

我玩了一会儿,找到了一个解决方案。您必须在
asis
代码块中使用
print

```{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')
}
```
`{r}
图书馆(GG2)

gg0在for循环中添加plot.new()和dev.off()解决了在最后一个选项卡中添加所有图形的问题。查看完整的解决方案。

您能提供一个小的可复制的示例吗?例如,您首先谈论
df[[1]]
,然后在代码中使用
gg0[[i]]
。我只是将原始变量
df
复制为
gg0
,以防万一我重写了它。但它们基本上是相同的数据。我现在可以绘制它们了!更新:此外,我曾尝试在代码块内生成另一个R代码块,但反勾号一直被解析为代码格式块。我正在寻找一种方法,将图片锚定在副标题后的那个位置。对我来说,我的示例是每个选项卡一个图。我猜asisblock中的块创建不会被解析,也不会工作。非常有用。你能解释一下猫是做什么的吗?“这些图是如何与每个选项卡关联的?”阿什利奇补充了一个简短的解释。
```{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')
}
```