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

R语言循环遍历文件夹:如何将文件名中的i设为循环变量?

解决R循环中动态替换路径变量的问题

嘿,我看了你的R代码问题啦,核心问题是你路径里的i只是普通字符串,没被循环变量替换,R根本不知道它要指代循环里的i值~下面给你两种简单的解决办法:

方法1:用paste0()拼接字符串(基础通用)

这是R里最常用的字符串拼接方式,把固定路径部分和循环变量i拼在一起,就能动态生成对应每个i的路径了:

for(i in seq(240, 555, 5)) { 
  # 动态生成对应i的文件夹路径
  folder <- paste0("C:/R_Files/test_auto_table_generator/pregnant_3mes_130kv_", i) 
  list.of.files <- list.files(folder, full.names=T) 
  
  # 生成要重命名的原文件路径和目标路径
  old_file <- paste0(folder, "/test_1_DoseDistribution.raw")
  # 这里把目标文件名改成结合i的格式,避免重名或混淆,你也可以根据需求调整
  new_file <- paste0(folder, "/130kv_", i, "_DoseDistribution.raw")
  
  # 执行重命名
  file.rename(old_file, new_file) 
}

方法2:用glue()函数(可读性更强)

如果你想让代码更直观,推荐用glue包——它允许你直接在字符串里用{i}引用变量,写起来更清爽:

首先先安装并加载glue包:

install.packages("glue")
library(glue)

然后修改循环代码:

for(i in seq(240, 555, 5)) { 
  folder <- glue("C:/R_Files/test_auto_table_generator/pregnant_3mes_130kv_{i}") 
  list.of.files <- list.files(folder, full.names=T) 
  
  old_file <- glue("{folder}/test_1_DoseDistribution.raw")
  new_file <- glue("{folder}/130kv_{i}_DoseDistribution.raw")
  
  file.rename(old_file, new_file) 
}

额外小提示

  • 记得先确认每个pregnant_3mes_130kv_{i}文件夹确实存在,不然会报错!可以加个判断跳过不存在的文件夹:
    for(i in seq(240, 555, 5)) { 
      folder <- glue("C:/R_Files/test_auto_table_generator/pregnant_3mes_130kv_{i}") 
      if(dir.exists(folder)) {
        old_file <- glue("{folder}/test_1_DoseDistribution.raw")
        new_file <- glue("{folder}/130kv_{i}_DoseDistribution.raw")
        file.rename(old_file, new_file) 
      } else {
        warning(glue("文件夹 {folder} 不存在,已跳过"))
      }
    }
    
  • 目标文件名尽量不要用130k...这种不完整的写法,结合i生成唯一的名字,避免文件覆盖或者后期混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:29:18