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

时间:2017-09-15 09:46:57

标签: r latex knitr sweave

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

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

  

##警告: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编译器的一部分必须这样做。

如何控制我的脚本不会打开任何连接?

1 个答案:

答案 0 :(得分:1)

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

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