如何在R中用正确的字母数字语法命名文件?

cbwuti44  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(77)

我正在尝试保存我的绘图的png列表,并且我希望绘图在命名时正确地按字母数字顺序排列。也就是说,我不希望名为10Plot.png的绘图早于名为1Plot.png的绘图。由于我正在使用Image Magick从绘图中制作gif,因此此顺序很重要,并且我需要编号始终为三位数。因此,我需要1Plot.png实际上是001Plot.png,10Plot.png实际上是010Plot.png,以此类推。
下面是一个最小的例子,重点介绍我目前如何命名pngs:

plotCount <- 100 # How many plots I would like to create a name for

nameList <- list() # Empty list to just contain the names

for(i in 1:plotCount){
  nameList[i] <- paste(i, "_Plot.png", sep = "")
}

我使用nameList来简单地表示我所需要的(正确命名的pngs),以避免要求某人在他们的计算机上制作100个pngs。

esyap4oy

esyap4oy1#

R是矢量化的,不需要循环。

plotCount <- 100L

nameList <- sprintf("%03d_Plot.png", seq.int(plotCount))
head(nameList, 20)
#>  [1] "001_Plot.png" "002_Plot.png" "003_Plot.png" "004_Plot.png" "005_Plot.png"
#>  [6] "006_Plot.png" "007_Plot.png" "008_Plot.png" "009_Plot.png" "010_Plot.png"
#> [11] "011_Plot.png" "012_Plot.png" "013_Plot.png" "014_Plot.png" "015_Plot.png"
#> [16] "016_Plot.png" "017_Plot.png" "018_Plot.png" "019_Plot.png" "020_Plot.png"

创建于2023年3月8日,使用reprex v2.0.2

编辑

这里是一个for循环解决方案,正如评论中所要求的。

plotCount <- 100L # How many plots I would like to create a name for
nameList <- character(plotCount) # Empty vector to just contain the names

for(i in seq.int(plotCount)){
  nameList[i] <- sprintf("%03d_Plot.png", i)
}

head(nameList, 20)
#>  [1] "001_Plot.png" "002_Plot.png" "003_Plot.png" "004_Plot.png" "005_Plot.png"
#>  [6] "006_Plot.png" "007_Plot.png" "008_Plot.png" "009_Plot.png" "010_Plot.png"
#> [11] "011_Plot.png" "012_Plot.png" "013_Plot.png" "014_Plot.png" "015_Plot.png"
#> [16] "016_Plot.png" "017_Plot.png" "018_Plot.png" "019_Plot.png" "020_Plot.png"

创建于2023年3月8日,使用reprex v2.0.2

编辑2

如果所需要的只是一个新的、连续编号的名称,那么下面的代码可能更好。
注意,我已经将plotCount更改为10L,测试不需要打印100行。

plotCount <- 10L # How many plots I would like to create a name for

for(i in seq.int(plotCount)){
  png_name <- sprintf("%03d_Plot.png", i)
  # do something with this string, 
  # here I print it
  cat("This is the current PNG name:", png_name, "\n")
}
#> This is the current PNG name: 001_Plot.png 
#> This is the current PNG name: 002_Plot.png 
#> This is the current PNG name: 003_Plot.png 
#> This is the current PNG name: 004_Plot.png 
#> This is the current PNG name: 005_Plot.png 
#> This is the current PNG name: 006_Plot.png 
#> This is the current PNG name: 007_Plot.png 
#> This is the current PNG name: 008_Plot.png 
#> This is the current PNG name: 009_Plot.png 
#> This is the current PNG name: 010_Plot.png

创建于2023年3月8日,使用reprex v2.0.2

相关问题