Как кешировать промежуточные результаты при рендеринге с параметрами? - PullRequest
1 голос
/ 23 октября 2019

С RMarkdown я пытаюсь визуализировать параметризованный отчет для разных значений параметра. В файле Rmd используется кэширование.

Кэширование работает, как и предполагалось, если я вяжу в RStudio с помощью кнопки knit: сначала создается кеш, затем используется при каждом последующем вязании, даже если я изменяю значение параметра в YAMLheader.

Но при зацикливании значений моих параметров и использовании rmarkdown::render() кэш перестраивается на каждой итерации.

Файл test.Rmd

---
title: "Untitled"
author: "Author"
params:
  id: 0
date: "23/10/2019"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Test `r params$id`

```{r cars, cache=TRUE}
## open and work on large file (simulate)
test <- mtcars
Sys.sleep(10)
```

ИСценарий рендеринга: render.R

library(rmarkdown)
library(tidyverse)

1:5 %>% 
  walk(function(x) render("test.Rmd",
                          params = list(id = x),
                          output_file = paste0("file", x, ".html")))

Выполнение сценария занимает 5 * 10 секунд вместо примерно 10 секунд.

Что я сделал не так? Как пользоваться кешем?

...