Khi lưu trữ các ô trong bản pdf R tạo tệp tạm thời (ví dụ: /tmp/RtmpFKQqjI/pdf317d27df81a0
) cho mỗi ô. Sau khi vẽ nhiều ô vào một pdf, phân vùng /tmp hết bộ nhớ và R ngừng hoạt động (máy tính của tôi cũng bị đóng băng).Xóa các tệp tạm thời được tạo bởi pdf()
Ít mã ví dụ:
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"
(. Kết quả tương tự cho pdf(file="Rplots%03d.pdf"); for (i in 1:10) { ... }; dev.off()
)
Tại sao không R gỡ bỏ những file tạm này sau khi gọi dev.off()
?
Là một workaround tôi thêm dòng sau đây sau mỗi dev.off()
:
unlink(list.files(path=tempdir(), pattern="^pdf.", full.names=TRUE))
Có cách nào tốt hơn?
hủy liên kết chỉ giải phóng dung lượng nếu không có tệp nào mở. Bạn có chắc chắn họ đã đóng cửa? Bạn có lsof trên hệ thống của bạn? – stark
IMHO các tập tin được đóng lại (chắc chắn sau khi gọi 'dev.off()'). 'lsof | grep "/ tmp/Rtmp */pdf *" 'không trả về giá trị nào (' $? == 1'). Unlink workaround hoạt động (bộ nhớ là miễn phí sau đó). – sgibb