Я читал похожие вопросы ( здесь , здесь и здесь , а также здесь ), но не смог получить эту работу, возможно, из-за сочетания гробов и растровых гробов в списке в l oop. По сути, у меня есть вложенный l oop для печати объектов в списке, и мне нужны заголовки для объектов, использующих markdown. Я использую подход knit_expand с дочерними шаблонами. Если я устанавливаю results = 'asis', заголовки работают, а графики - нет, а если я удаляю results = 'asis', графики работают, но не заголовки. Какие-нибудь решения? Вот воспроизводимый пример, который близок к тому, что я делаю, хотя подсписки здесь придуманы и работают не совсем правильно, но идея та же (сочетание заголовков, которые должны быть объектами asis и plot):
Главный шаблон (Master.Rmd)
---
title: "Example"
output:
html_document:
toc: true
toc_float: true
toc_depth: 2
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(knitr)
library(datasets)
library(ggplot2)
library(data.table)
library(png)
library(grid)
library(gridExtra)
library(RCurl)
data(iris)
plotsList = vector(mode = "list", length = length(levels(iris$Species)))
names(plotsList) = levels(iris$Species)
irisDT = as.data.table(iris)
dataInList = split(irisDT, by="Species")
for(i in seq(plotsList)){
plotsList[[i]]$example_plot[1] <- list(ggplot(data=dataInList[[i]], aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() + xlab("Sepal Length") + ylab("Sepal Width") +
ggtitle(paste0("Sepal Length-Width for ", names(plotsList[i]))))
plotsList[[i]]$example_plot[2] <- list(ggplot(data=dataInList[[i]], aes(x = Petal.Length, y = Petal.Width)) +
geom_point() + xlab("Petal Length") + ylab("Petal Width") +
ggtitle(paste0("Petal Length-Width for ", names(plotsList[i]))))
plotsList[[i]]$png_example <- rasterGrob(readPNG(getURLContent(("https://i.imgur.com/mfuTUPD.png"))))
}
```
# Big Heading
some text
## Other headings
other text
# Loop output Description {.tabset .tabset-fade}
text about loop output
```{r run_loop, echo=FALSE}
# for the headings to work, results need to be asis, but then the plots don't work :(
out = NULL
out2 = NULL
for(i in seq(plotsList)){
cat("\n")
cat("## ", {{names(plotsList[i])}}, "\n")
out = c(out, knit_expand('one_level.Rmd'))
for(j in seq(plotsList[[i]][['example_plot']])){
out2 = c(out2, knit_expand('two_level.Rmd'))
}
}
```
`r paste(knit(text = out), collapse = '\n')`
`r paste(knit(text = out2), collapse = '\n')`
```
и дочерний шаблон (Child.Rmd):
```{r echo=FALSE}
grid.arrange(plotsList[[i]][['example_plot']][[j]])
```
```{r echo=FALSE, results='asis'}
grid.arrange(plotsList[[i]][['png_example']])
```