呈现多个Rmarkdown报告时出现Pandoc错误1033

时间:2019-09-18 13:45:35

标签: r r-markdown pandoc

我有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/1033rmarkdown::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’

2 个答案:

答案 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可能是解决方案。

  1. 使用rmarkdown::pandoc_version()检查当前用于生成Rmarkdown报告的pandoc版本。
  2. 访问此网站:https://pandoc.org/releases.html,检查您使用的版本是否为最新版本。

对我而言并非如此(我使用的是Pandoc v2.6,最后一个是v2.7.3) 因此,我遵循了此页面上的教程:https://pandoc.org/installing.html

然后,我检查了rmarkdown::pandoc_version()是否返回了最新的版本号,并重新运行了R脚本。解决了这个问题。

答案 1 :(得分:1)

一个小技巧:我需要添加的是,当我第一次安装Pandoc时,我选择了私有用户而不是公共用户。因此,在R中输入rmarkdown::pandoc_version()后仍给出2.60。因此最好选择公开安装。