gpt4 book ai didi

删除由 pdf() 创建的临时文件

转载 作者:行者123 更新时间:2023-12-04 11:49:41 25 4
gpt4 key购买 nike

在 pdf 中存储图时,R 会为每个图生成一个临时文件(例如 /tmp/RtmpFKQqjI/pdf317d27df81a0)。在将许多绘图绘制到 pdf 中后,我的/tmp 分区内存不足并且 R 停止工作(我的桌面也卡住了)。

小代码示例:

for (i in 1:10) {
pdf(file=paste(i, ".pdf", sep=""))
plot(1:10)
dev.off()
}

list.files(path=tempdir(), pattern="^pdf.", full.names=TRUE)
# [1] "/tmp/RtmpFKQqjI/pdf317d27df81a0" "/tmp/RtmpFKQqjI/pdf317d28ed0612"
# [3] "/tmp/RtmpFKQqjI/pdf317d295c2453" "/tmp/RtmpFKQqjI/pdf317d304bb025"
# [5] "/tmp/RtmpFKQqjI/pdf317d3332d7fe" "/tmp/RtmpFKQqjI/pdf317d3921428f"
# [7] "/tmp/RtmpFKQqjI/pdf317d4cf812ca" "/tmp/RtmpFKQqjI/pdf317d5082bebe"
# [9] "/tmp/RtmpFKQqjI/pdf317d560d326" "/tmp/RtmpFKQqjI/pdf317d674b25ea"

( pdf(file="Rplots%03d.pdf"); for (i in 1:10) { ... }; dev.off() 的结果相同。)

为什么 R 在调用 dev.off() 后不删除这个临时文件?

作为一种解决方法,我在每个 dev.off() 之后添加以下行:
unlink(list.files(path=tempdir(), pattern="^pdf.", full.names=TRUE))

有没有更好的办法?

最佳答案

我倾向于同意@stark 的观点,即这是 R 的 pdf 中的一个(小)错误。设备实现。

一种解决方法是改用 cairo_pdf设备,它产生基本相同的 pdf,但不会在临时目录中留下额外的文件。

for (i in 1:2) {
cairo_pdf(file=paste(i, ".pdf", sep=""))
plot(1:10)
dev.off()
}
list.files(path=tempdir(), pattern="^pdf.", full.names=TRUE)
# character(0)

关于删除由 pdf() 创建的临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11492504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com