如何在R中从不同文件夹导入同名多文件并单独处理?
按文件夹独立读取CSV文件的解决方案
要实现每个Data文件夹内的file1.csv和file2.csv独立读取、独立分析,不需要合并同文件名的文件,可以按文件夹维度循环,而不是按文件名维度批量读取。以下是具体实现方法:
基础R实现步骤
定位所有Data文件夹路径
先获取主目录下的所有Data子文件夹路径,确保只处理目标文件夹:# 主路径 main_path <- "C:\\User\\Files\\" # 获取一级子文件夹的完整路径,筛选出包含"Data"的文件夹 data_folders <- list.dirs(path = main_path, recursive = FALSE, full.names = TRUE) data_folders <- grep("Data", data_folders, value = TRUE)循环读取每个文件夹内的两个CSV文件
遍历每个Data文件夹,单独读取其中的file1.csv和file2.csv,可以直接在循环内做分析,也可以将数据存入列表方便后续调用:# 创建列表存储所有数据,结构为:文件夹名 → 包含file1、file2数据框的子列表 all_data <- list() for (folder in data_folders) { # 拼接当前文件夹内的两个文件路径 file1_path <- file.path(folder, "file1.csv") file2_path <- file.path(folder, "file2.csv") # 读取文件 df_file1 <- read.csv(file1_path) df_file2 <- read.csv(file2_path) # -------------------------- # 这里插入你的独立分析代码 # 示例:打印当前文件夹的文件基本信息 cat("=== 处理文件夹:", basename(folder), "===\n") cat("file1.csv 行数:", nrow(df_file1), "列数:", ncol(df_file1), "\n") cat("file2.csv 行数:", nrow(df_file2), "列数:", ncol(df_file2), "\n\n") # -------------------------- # 将当前文件夹的数据存入列表 all_data[[basename(folder)]] <- list( file1 = df_file1, file2 = df_file2 ) }调用独立数据
循环结束后,可以通过列表索引直接调用任意文件夹的任意文件:# 查看Data1文件夹下的file1.csv数据 head(all_data[["Data1"]][["file1"]]) # 查看Data3文件夹下的file2.csv数据 summary(all_data[["Data3"]][["file2"]])
为什么你的原有方法会合并文件?
你之前的代码只是批量收集了所有同名文件的路径,若后续用lapply(files1, read.csv) %>% bind_rows()这类操作,就会把所有file1.csv合并成一个数据框。而按文件夹循环的方式,会让每个文件夹内的两个文件始终保持独立,完全满足你"独立分析"的需求。
内容的提问来源于stack exchange,提问作者starski
相关产品推荐
相关产品推荐

