Красивый. Я добавил несколько строк, чтобы удалить ненужные данные между циклами; это не сработало. Мне пришлось бы очищать рабочее пространство каждые 8 ​​отчетов и повторить попытку. Это решение сработало для меня (все 20 отчетов могут быть представлены одновременно). БЛАГОДАРЮ ВАС!

я есть несколько каталогов с файлами Rmd для компиляции в HTML. Каждый звонокrmarkdown::render включает в себя большой списокparams, Все отлично работает, когда я рендерим файлы Rmd по отдельности.

Однако, когда я выполняю функцию, которая перебирает каталоги и создает файлы HTML, происходит сбой после завершения девяти (это не конкретный Rmd, вызывающий проблему, он вылетает 9-го числа независимо от порядка).

Соответствующая часть трассировки ошибок:

Error: cannot allocate vector of size 38.4 Gb

8. knitr::knit_meta_add(old_knit_meta, attr(old_knit_meta, "knit_meta_id")) 

7. rmarkdown::render(input = RMDfile, output_file = RMDfileout, 
        output_format = output, output_dir = dir, param = params, 
        quiet = quiet)

Кажется, проблема вызвана этой строкой вrmarkdown::render:

 on.exit({
    knit_meta_reset()
    if (length(old_knit_meta)) {
      knitr::knit_meta_add(old_knit_meta, attr(old_knit_meta, 
                                               "knit_meta_id"))
    }
  }, add = TRUE)

Мне кажется, чтоparams от предыдущих вызовов сохраняются в метаданных и становятся слишком большими послеrmarkdown::render вызывается 9 раз в функции.

rmarkdown::knitr имеетknit_meta аргумент, но справочная документация говорит "(Для экспертного использования) Метаданные, сгенерированные knitr"а я нетknitr эксперт.

Файлы Rmd полностью независимы друг от друга. Есть ли способ сбросить метаданные knitr для каждого вызоваrmarkdown::render?

Я надеюсь, что кто-то может предложить быстрое решение или обходной путь для этого. Если нет, я разработаю пример, чтобы воспроизвести проблему.

Ответы на вопрос(1)

Ваш ответ на вопрос