Можете ли вы вызвать / отобразить параметризованный отчет rmd в другом параметризованном отчете rmd — rmarkdown

#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