You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在RStudio中按4位序列索引提取文件时遇文件名匹配错误求助

问题解决:生成带前导零的4位数字文件名

你的问题核心是没有给数字补前导零,导致R生成的文件名是horse1.png,但实际文件是horse0001.png这类4位数字格式。修改代码的关键是把索引数字格式化为4位带前导零的字符串,具体改动如下:

修改后的完整代码

library(fs)
library(glue)

original_dir <- path("data/horsies")
new_base_dir <- path("data/horsies2")

make_subset <- function(subset_name, start_index, end_index) {
  # 遍历每个类别
  for (category in c("horse", "ponies")) {
    # 创建目标文件夹
    target_dir <- new_base_dir / subset_name / category
    dir_create(target_dir)
    
    # 逐个处理每个索引,格式化4位带前导零的数字
    for (idx in start_index:end_index) {
      # 用sprintf生成4位数字,%04d表示补零到4位
      num_str <- sprintf("%04d", idx)
      file_name <- glue::glue("{category}{num_str}.png")
      
      # 复制文件
      file_copy(original_dir / file_name, target_dir / file_name)
    }
  }
}

# 调用函数
make_subset("train", start_index = 1, end_index = 2000)
make_subset("validation", start_index = 2001, end_index = 2200)
make_subset("test", start_index = 2201, end_index = 2500)

关键改动说明

  • 新增内层循环遍历每个索引idx,避免直接把向量丢进glue导致格式错误
  • 用sprintf("%04d", idx)把数字转换成4位带前导零的字符串(比如1→"0001",2001→"2001")
  • 修正了文件名拼接逻辑,原来的{category}.{...}多了个点,改成{category}{num_str}匹配你例子里的Horse0001.jpg格式

如果你的文件扩展名是.jpg而不是.png,记得把代码里的.png改成.jpg。

内容的提问来源于stack exchange,提问作者zappbran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:00:45