如何循环读取不同文件夹中对应分组的RDS文件?
解决方案
先从其中一个文件夹提取所有分组名称(由于两组分组一一对应,取任意一个文件夹即可),之后循环遍历每个分组,读取对应路径下的RDS文件,再执行你的滚动连接逻辑,最后保存结果。
代码实现
# 定义路径 path1 <- "你的第一个文件夹路径" path2 <- "你的第二个文件夹路径" output_path <- "结果输出文件夹路径" # 创建输出文件夹(不存在则自动创建) if (!dir.exists(output_path)) { dir.create(output_path, recursive = TRUE) } # 获取所有分组名称(从path1提取,去除.RDS后缀) group_names <- sub("\\.RDS$", "", list.files(path1, pattern = "\\.RDS$")) # 循环处理每个分组 for (group in group_names) { # 构造两个分组文件的完整路径 file_path1 <- file.path(path1, paste0(group, ".RDS")) file_path2 <- file.path(path2, paste0(group, ".RDS")) # 读取分组数据 df1_group <- readRDS(file_path1) df2_group <- readRDS(file_path2) # -------------------------- # 此处插入你的滚动连接逻辑 # 示例(以data.table滚动连接为例,按需替换): # library(data.table) # setDT(df1_group) # setDT(df2_group) # result_df <- df1_group[df2_group, on = .(your_key_column), roll = TRUE] # -------------------------- # 保存处理后的结果 saveRDS(result_df, file = file.path(output_path, paste0(group, "_result.RDS"))) # 清理临时变量,释放内存 rm(df1_group, df2_group, result_df) gc() }
额外提示
- 用
file.path()构造路径更稳妥,它会自动适配Windows、Linux/macOS的路径分隔符,避免手动拼接出现错误。 - 可以提前校验两个文件夹的分组是否完全匹配,避免出现找不到文件的情况:
# 校验分组一致性 group_names2 <- sub("\\.RDS$", "", list.files(path2, pattern = "\\.RDS$")) if (!all.equal(sort(group_names), sort(group_names2))) { stop("两个文件夹的分组不匹配,请检查文件!") }
内容的提问来源于stack exchange,提问作者Jef van Cappellen
相关产品推荐
相关产品推荐

