あなたが探しているのはsprintf()関数だ
sprintf
と思います... n のテストから解放され、先行ゼロがいくつ必要かがわかります。paste()またはpaste0
関数
と組み合わせると、目的のファイル名を生成するのがワンライナーになります。
実際、sprintf() 関数を単独で使用することもできますが、ファイル名や「TrakID」を生成する関数を使用すると、これらすべてのファイル命名規則の詳細を隠すことができます。
sprintf("intersections_track_calibrated_jma_from1951_%04d.csv", n)
以下では、数値 n を指定してファイル名を生成するために作成された便利な関数のコンテキストで、sprintf() と paste0() の動作を参照してください。
> 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"
>