Вот один из способов решения проблемы, подобной этой.Мне дали подсказку на SO, но я не могу найти ответ ...
Два документа: один родитель, один ребенок.Думайте о дочернем документе как о подпрограмме, которую можно вызывать любое количество раз, и его выходные данные сохраняются (и объединяются в вектор character
out
).Когда я закончу в этом цикле, я использую встроенный блок `r code`
.
Основной документ, "родитель", я думаю:
---
output: md_document
---
```{r data}
data("iris","airquality","mtcars")
my_list <- list(iris,airquality,mtcars)
names(my_list) <- c("iris","airquality","mtcars")
```
```{r headers, echo = FALSE, include = FALSE, results = 'asis'}
out <- NULL
for (i in seq_along(my_list)) {
out <- c(out, knitr::knit_child("somedoc-child.Rmd"))
}
```
`r paste(out, collapse="\n")`
Дочерний документ, тот же каталог, называемый somedoc-child.Rmd
выше, вызываемый родительским документом.Он видит окружение точно так же, как родитель оставляет его, поэтому my_list
и i
видны идеально.
# `r names(my_list[i])`
```{r, results="asis"}
nrow(my_list[[i]])
```
Когда я вяжу уценку, я получаю:
data("iris","airquality","mtcars")
my_list <- list(iris,airquality,mtcars)
names(my_list) <- c("iris","airquality","mtcars")
iris
====
nrow(my_list[[i]])
\[1\] 150
airquality
==========
nrow(my_list[[i]])
\[1\] 153
mtcars
======
nrow(my_list[[i]])
\[1\] 32