Adr*_*ian 9 r knitr r-markdown
我有一堆目录与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)
Run Code Online (Sandbox Code Playgroud)
该问题似乎是由以下行引起的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)
Run Code Online (Sandbox Code Playgroud)
在我看来,params之前的调用正在保存在元数据中,并且rmarkdown::render在函数中调用9次之后变得太大了.
rmarkdown::knitr有一个knit_meta参数,但帮助文档说" (专家使用)由knitr生成的元数据 ",我不是knitr专家.
Rmd文件完全相互独立.有没有办法重置每次调用的knitr元数据rmarkdown::render?
我希望有人能为此提供快速修复或解决方法.如果没有,我将开发一个例子来重现问题.
Adr*_*ian 13
在rmarkdown::render代码中挖掘了一段时间后,我找到了解决方案.
添加knitr::knit_meta(class=NULL, clean = TRUE)之前rmarkdown::render(input=file, etc)似乎做了伎俩..