循环读取Excel指定区域生成独立DataFrame时数据重复问题求助
问题排查与解决
错误根源
- 内层循环完全多余,且是问题核心:每次读取一个Excel文件后,你通过内层循环把当前文件的数据全部覆盖到
Data_001至Data_005这5个变量中。当循环到最后一个文件时,所有变量自然都会被最后一个文件的数据替换。 - 外层循环未将文件名列表与
codes列表做一一对应,导致无法按顺序为每个文件的数据分配对应命名。
修正后的代码(两种方案)
方案1:索引式for循环(直观易理解)
library(readxl) # 获取文件夹内的xlsx文件列表 list_excelfiles <- list.files(pattern='*.xlsx') # 定义数据框命名后缀 codes <- c("001", "002", "003", "004", "005") # 先检查文件数量和后缀数量是否匹配,避免出错 if(length(list_excelfiles) != length(codes)) { stop("文件数量与命名后缀数量不匹配,请检查") } # 按索引循环,确保每个文件对应一个唯一命名 for (i in seq_along(list_excelfiles)) { # 读取指定区域的数据 current_df <- read_excel(list_excelfiles[i], range = "A2:C4", col_types = "numeric") # 为数据框分配对应名称 assign(paste0("Data_", codes[i]), current_df) }
方案2:用Map批量处理(更简洁)
library(readxl) list_excelfiles <- list.files(pattern='*.xlsx') codes <- c("001", "002", "003", "004", "005") if(length(list_excelfiles) != length(codes)) { stop("文件数量与命名后缀数量不匹配,请检查") } # 自动配对文件与后缀,批量读取并命名 Map(function(file, code) { df <- read_excel(file, range = "A2:C4", col_types = "numeric") assign(paste0("Data_", code), df, envir = .GlobalEnv) }, list_excelfiles, codes)
内容的提问来源于stack exchange,提问作者Rbeginner
相关产品推荐
相关产品推荐

