[英]Automatic file numbering in ggsave as in png
在png()
,第一個參數是filename = "Rplot%03d.png"
,這將導致文件以升序生成。 但是,在ggsave,
此操作不起作用,該數字始終保持為最低數字(Rplots001.png“),並且該文件始終被覆蓋。
綜觀的grDevices函數的代碼(例如grDevices::png()
似乎自動命名發生在其被調用的函數.External()
R中是否已經有此文件命名功能的實現,以便可以在grDevices函數之外訪問它?
編輯:問不同,在關閉並重新啟動設備后,是否可以繼續自動編號? 例如,在此代碼中,后面的兩個文件將覆蓋前一個文件:
png(width = 100)
plot(1:10)
plot(1:10)
dev.off()
png(width = 1000)
plot(1:10)
plot(1:10)
dev.off()
您可以編寫一個函數來執行此操作。 例如,簡單地添加時間戳如何。 就像是:
fname = function(basename = 'myfile', fileext = 'png'){
paste(basename, format(Sys.time(), " %b-%d-%Y %H-%M-%S."), fileext, sep="")
}
ggsave(fname())
或者,如果您更喜歡順序編號,則遵循
next_file = function(basename = 'myfile', fileext = 'png', filepath = '.'){
old.fnames = grep(paste0(basename,' \\d+\\.', fileext,'$'),
list.files(filepath), value = T)
lastnum = gsub(paste0(basename,' (\\d+)\\.', fileext,'$'), '\\1', old.fnames)
if (!length(lastnum)) {
lastnum = 1
} else {
lastnum = sort(as.integer(lastnum),T)[1] + 1L
}
return(paste0(basename, ' ', sprintf('%03i', lastnum), '.', fileext))
}
ggsave(next_file())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.