我認爲你正在尋找的是sprintf()功能...
sprintf
將使您無法在n上進行測試,知道需要多少前導零。
結合paste() or paste0函數,生成所需的文件名將成爲一行。
事實上,它可能只是單獨使用sprintf()函數,如
sprintf("intersections_track_calibrated_jma_from1951_%04d.csv", n)
,但具有生成文件名和/或「TrakID」的函數可以允許隱藏所有這些文件命名約定細節。
下面,請參閱sprintf()和paste0()在創建便利函數的上下文中,以生成給定數字n的文件名。
> GetFileName <- function(n)
paste0("intersections_track_calibrated_jma_from1951_",
sprintf("%04d", n),
".csv")
> GetFileName(1)
[1] "intersections_track_calibrated_jma_from1951_0001.csv"
> GetFileName(13)
[1] "intersections_track_calibrated_jma_from1951_0013.csv"
> GetFileName(321)
[1] "intersections_track_calibrated_jma_from1951_0321.csv"
>
當然,你可以使用GetFileName功能更靈活的通過添加參數,它與默認值一些。以這種方式,它可以用於輸入和輸出文件名(或任何其他文件前綴/擴展名)。例如:
GetFileName <- function(n, prefix=NA, ext="csv") {
if (is.na(prefix)) {
prefix <- "intersections_track_calibrated_jma_from1951_"
}
paste0(prefix, sprintf("%04d", n), ".", ext)
}
> GetFileName(12)
[1] "intersections_track_calibrated_jma_from1951_0012.csv"
> GetFileName(12, "output/tracks_crossing_regional_polygon_", "txt")
[1] "output/tracks_crossing_regional_polygon_0012.txt"
> GetFileName(12, "output/tracks_crossing_regional_polygon_")
[1] "output/tracks_crossing_regional_polygon_0012.csv"
>
來源
2012-11-07 16:57:54
mjv
嗯我有問題的paste0函數。我需要一個特殊的圖書館來使用它嗎? – kimmyjo221
@ user1716877不,但您確實需要一個最新的R.將'paste0(foo)'更改爲'paste(foo,sep =「」)'以獲得類似結果的老版本R. –
它是pasteZERO而不是pasteOH。你使用什麼版本的R?我認爲這已經持續了一年,至少... –