Мне интересно, возможно ли вызвать/отобразить параметризованный отчет из другого параметризованного отчета?
Я нашел [это] [1], но, похоже, это не решение.
Ниже приведен минимальный пример, когда основной отчет.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)
```
основной отчет.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))
```
Я получаю следующую ошибку:
Error: params object already exists in the knit environment so can't be overwritten by rend param. Execution halted.
Решение состоит в том, чтобы использовать другой параметр в функции рендеринга: 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())
Это раздражает, вы нашли другое решение, помимо сохранения и перезагрузки? @Джмак
Спасибо @J_F. Просто для подтверждения: использование этого будет означать, что любые переменные, созданные в sub-report-rmd, не будут доступны для использования в main-report.rmd (если только они не будут загружены вручную из сохраненного rds).