如何用R创建ppt-01至ppt-48文件夹并迁移对应参与者文件
解决方案
1. 正确生成并创建目标文件夹
你之前的代码存在两个问题:一是生成的文件夹名称格式不对(比如10会变成ppt-010而非ppt-10),二是dir.create无法直接处理lapply返回的列表。以下是修正后的代码:
setwd("P:/data") # 生成格式统一的文件夹名称:ppt-01 到 ppt-48 folder_names <- sprintf("ppt-%02d", 1:48) # 循环创建文件夹,先判断是否已存在避免重复创建报错 for(folder in folder_names) { if(!dir.exists(folder)) { dir.create(folder) } }
2. 匹配文件并移动到对应文件夹
接下来通过正则提取文件名中的PPT编号,将文件移动到对应文件夹:
# 获取当前目录下所有文件的完整路径 all_files <- list.files(full.names = TRUE) # 循环处理每个文件 for(file in all_files) { # 从文件名中提取PPT编号(示例匹配"XX01_040_xxx6_9"中的"040") # 若你的编号是两位(比如01),把正则里的\\d{3}改成\\d{2} ppt_num <- sub(".*_(\\d{3})_.*", "\\1", basename(file)) # 转换为整数并生成目标文件夹名称 target_folder <- sprintf("ppt-%02d", as.integer(ppt_num)) # 确认目标文件夹存在后移动文件 if(dir.exists(target_folder)) { file.rename(from = file, to = file.path(target_folder, basename(file))) } }
关键细节说明
sprintf("ppt-%02d", x):自动为1-9的数字补前导零,确保文件夹名称格式统一。- 正则表达式
.*_(\\d{3})_.*:精准匹配文件名中两个下划线之间的三位数字编号,可根据实际文件名结构调整。 file.path():生成跨系统兼容的文件路径,避免Windows/Linux路径分隔符问题。- 加入
dir.exists()判断:防止因编号错误或文件夹未创建导致的运行报错。
内容的提问来源于stack exchange,提问作者ubik_01
相关产品推荐
相关产品推荐

