Похоже, что это случай для шаблона документа и knitr::knit_expand()
. Канонический ответ: здесь . Работа со строками также отправила мне этот ответ , так как я не был полностью уверен, как нотация "{{"
работает в этом подходе.
Этот подход включает создание шаблона R уценкидокумент в том же каталоге. В зависимости от того, хотите ли вы включить фрагменты кода или вам нужны имена фрагментов, это может выглядеть примерно так:
## {{species}}
```{r species_loop-{{species}}, echo = FALSE}
df_filtered <- df %>%
dplyr::filter(Species == "{{species}}")
df_filtered %>%
ggplot2::ggplot(ggplot2::aes(Sepal.Length, Petal.Length)) +
ggplot2::geom_point()
my_model <- lm(Sepal.Length ~ Petal.Length, data = df_filtered)
summary(my_model)
```
Тогда код вашего основного документа может выглядеть следующим образом:
```{r}
library(dplyr)
library(ggplot2)
df <- datasets::iris %>%
dplyr::as_tibble()
```
```{r, include = FALSE}
src <- lapply(c("setosa", "versicolor", "virginica"),
function(species) {
knitr::knit_expand(file = "template.Rmd")
}
)
```
`r knitr::knit(text = unlist(src))`