#r #r-markdown #knitr
#r #r-markdown #knitr
Вопрос:
Мне интересно, действительно ли возможно вызвать / отобразить параметризованный отчет из другого параметризованного отчета?
Я нашел [это] [1], но, похоже, это не дает решения.
Ниже приведен минимальный пример, в котором main-report.rmd пытается вызвать / отобразить вложенный отчет-1.rmd . Оба отчета имеют одинаковые параметры в заголовке YAML.
библиотека (здесь)
вложенный отчет-1.rmd
---
title: "Secondary report to run"
output: html_document
params:
country: "Canada"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
paste0("Hello ", params$country)
```
main-report.rmd
---
title: "Main report"
output: html_document
params:
country: "France"
---
```{r run1, include=FALSE}
rmarkdown::render(here::here("rmd", "sub-report-1.rmd"),
output_format = "html_document",
output_file="report1.html",
params = list(country=params$country))
```
Я получаю следующую ошибку:
Ошибка: объект params уже существует в среде knit, поэтому не может быть перезаписан параметром rend . Выполнение остановлено.
Ответ №1:
Решение состоит в том, чтобы использовать другой параметр в функции визуализации: envir = new.env()
. Проблема в том, что объект params
уже используется.
rmarkdown::render(here::here("rmd", "sub-report-1.rmd"),
output_format = "html_document",
output_file="report1.html",
params = list(country=params$country),
envir = new.env())
Комментарии:
1. Спасибо @J_F. Просто для подтверждения, использование этого будет означать, что любые переменные, созданные в вложенном отчете-rmd, не будут доступны для использования в main-report.rmd (если не загружены вручную из сохраненного rds).
2. Это раздражает, вы нашли другое решение помимо необходимости сохранения и последующей перезагрузки? @Jmac