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
相关产品推荐
相关产品推荐

