R语言如何自动提取日期命名文件夹的最新日期并生成访问路径
R语言实现自动识别最新日期文件夹方案
以下提供两类适配不同场景的实现方案,均兼容你原有的赋值逻辑:
方案1:按文件夹名称的日期字段匹配(推荐,不受文件操作影响)
适合所有文件夹均严格按照YYYYMMDD8位数字格式命名的场景,直接通过名称匹配取值即可:
# 读取目标路径下所有一级文件夹名称 all_dirs <- list.dirs(path = "c:/Document/", full.names = FALSE, recursive = FALSE) # 过滤出符合8位数字格式的日期文件夹,排除其他无关文件夹 valid_date_dirs <- grep("^\\d{8}$", all_dirs, value = TRUE) # 可选:增加日期合法性校验,过滤掉格式合规但实际不存在的日期(如20230230) date_objs <- as.Date(valid_date_dirs, format = "%Y%m%d") valid_date_dirs <- valid_date_dirs[!is.na(date_objs)] # 取最大日期赋值 datadate <- max(as.numeric(valid_date_dirs)) # 拼接路径 input_dir <- paste0("c:/Document/", datadate, "/")
如果你可以确保所有文件夹命名都是合法的日期格式,可以省略校验步骤,直接取最大值即可,代码更精简。
方案2:按文件夹实际修改/创建时间匹配
适合不需要依赖文件夹名称,只需要取最近操作过的文件夹的场景:
# 获取所有一级文件夹的属性信息 dir_info <- file.info(list.dirs("c:/Document/", full.names = TRUE, recursive = FALSE)) # 按修改时间排序取最新的文件夹,提取名称赋值 latest_dir_path <- rownames(dir_info)[which.max(dir_info$mtime)] datadate <- basename(latest_dir_path) # 拼接路径 input_dir <- paste0("c:/Document/", datadate, "/")
把代码中的
mtime改为ctime即可切换为按文件夹创建时间匹配。
内容的提问来源于stack exchange,提问作者Stataq
相关产品推荐
相关产品推荐

