我有 r
包含我调用 rmarkdown::render()
的循环的脚本创建多个 HTML 报告。该过程运行良好,直到我开始生成更大的报告文件(这让我想到了内存问题......)。
几次成功迭代后,该过程停止并在 R 控制台中显示以下消息:Error: pandoc document conversion failed with error 1033
.render()
函数在循环内使用:
for (i in 1:length(random_vector)) {
id = random_vector[i]
knitr::knit_meta(class=NULL, clean = TRUE) # does not prevent the problem
rmarkdown::render("my_rmd_file_that_generates_reports.Rmd",
output_file = paste(id_fiche, "report.html"))
}
这里没有提到这个错误:https://pandoc.org/help.html并且与此不对应:https://github.com/jgm/pandoc/issues/1033 .
这里提到的想法rmarkdown::render() in a loop - cannot allocate vector of size使用这一行:
knitr::knit_meta(class=NULL, clean = TRUE)
不是解决这个问题。注意:我不能给出一个可重复的例子,因为我不知道问题的确切根源,我希望有人遇到同样的问题并找到解决它的方法。
session 信息:
R 版本 3.6.0 (2019-04-26)
平台:x86_64-w64-mingw32/x64(64位)
运行于:Windows 10 x64(内部版本 18362)
[编辑]
这是我正在使用的 pandoc 版本:
>pandoc_version()
[1] ‘2.6’
最佳答案
这是解决错误的过程。这个想法来自@tarleb's评论。
错误 1033 不是 Pandoc 错误;此处未引用:https://github.com/jgm/pandoc/blob/master/MANUAL.txt#L1384 .
而不是用knitr::knit_meta(class=NULL, clean = TRUE)
可以解决的内存使用问题
按照建议 here ,更新 Pandoc 可以解决。
rmarkdown::pandoc_version()
检查当前用于生成 Rmarkdown 报告的 pandoc 版本。 对我来说并非如此(我使用的是 Pandoc 的 v2.6,最后一个是 v2.7.3)
所以我遵循了这个页面的教程:https://pandoc.org/installing.html .
然后我检查了是否
rmarkdown::pandoc_version()
返回了最新的版本号,然后我重新运行了我的 R 脚本。它解决了这个问题。
关于r - 渲染多个 Rmarkdown 报告时出现 Pandoc 错误 1033,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994237/