我有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)
提到的想法无法解决此问题。
注意:由于我不知道问题的确切根源,因此我无法给出一个可复制的例子,我希望有人遇到同样的问题并找到解决问题的方法。
会话信息:
R版本3.6.0(2019-04-26)
平台:x86_64-w64-mingw32 / x64(64位)
在以下操作系统上运行:Windows 10 x64(内部版本18362)
[编辑] 这是我正在使用的pandoc版本:
>pandoc_version()
[1] ‘2.6’
答案 0 :(得分:3)
这是解决错误的过程。这个想法来自@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脚本。解决了这个问题。
答案 1 :(得分:1)
一个小技巧:我需要添加的是,当我第一次安装Pandoc时,我选择了私有用户而不是公共用户。因此,在R中输入rmarkdown::pandoc_version()
后仍给出2.60。因此最好选择公开安装。