プロットをpdfに保存すると、プロットごとに一時ファイル(例:/tmp/RtmpFKQqjI/pdf317d27df81a0
)が生成されます。多くのプロットをpdfに描画した後、私の/tmpパーティションのメモリが不足し、Rの動作が停止します(私のデスクトップもフリーズします)。pdf()によって作成された一時ファイルを削除する
リトルコード例:
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))
は、より良い方法はありますか?
unlinkは、ファイルが開いていない場合にのみスペースを解放します。彼らは閉じていると確信していますか?あなたのシステムにlsofがありますか? – stark
IMHOファイルは閉じられています( 'dev.off()'の呼び出し後)。 'lsof | grep "/ tmp/Rtmp */pdf *" 'は何も返しません(' $?== 1')。リンク解除の回避策が機能します(メモリは後で解放されます)。 – sgibb