我正在基于.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编译器的一部分必须这样做。
如何控制我的脚本不会打开任何连接?
答案 0 :(得分:1)
Sweave2knitr()
中存在错误。它打开与源文件的连接,永远不会关闭它。连接将在下一次垃圾收集时关闭,这可能在相当不可预测的时间发生。
所以要解决这个问题,请不要多次调用Sweave2knitr()
(正如我在评论中所建议的那样),或者在调用gc()
之后再调用knit2pdf()
来生成警告。这可能会减慢速度,但可能并不明显,因为knit2pdf
可能很慢。