R sweave 在 PDF 输出上写入连接关闭警告消息

R sweave writes connection closed warning message on PDF output

我正在基于 .Rnw 模板迭代生成数千份 PDF 报告。我包含的图表是预先生成的 .png,不是即时生成的。

我的问题是大约有 1% 的时间(到目前为止我还没有找到模式),我收到一条非常明显的粉红色警告消息:

## Warning: cerrando la conenexion 3 (report.Rnw) que no esta siendo utilizada

我用来从 Sweave 生成​​ PDF 的 R 代码是:

Sweave2knitr(file = "report.Rnw",
             output = "./temp/report-knitr.Rnw")
knit2pdf(input = "./temp/report-knitr.Rnw",
         quiet = TRUE,
         clean = TRUE,
         envir = environment(),
         encoding = "UTF-8")

此外,我使用库 kableExtra 生成表格和 xelatex。

显然,重新生成文件会使消息消失,所以我使用包 pdftools 打开每个报告并检查错误消息,但我仍然担心和好奇为什么我会收到消息,因为我不知道我的脚本中没有显式打开任何连接,因此 R/LaTeX 编译器的一部分必须这样做。

如何控制我的脚本不让任何连接保持打开状态?

Sweave2knitr() 中存在错误。它打开与源文件的连接并且从不关闭它。连接将在下一次垃圾回收时关闭,这可能会在相当不可预测的时间发生。

因此,要解决此问题,请不要多次调用 Sweave2knitr()(正如我在评论中所建议的那样),或者之后调用 gc() 以在调用 knit2pdf() 之前生成警告.这可能会减慢速度,但可能不会很明显,因为 knit2pdf 可能很慢。