R语言批量读取Excel指定工作表并按文件名自定义命名数据框
R批量导入Excel指定工作表并自定义数据框命名
实现思路
命名异常的核心原因是没有对文件路径做分层处理,直接用全路径拼接名称会携带冗余路径信息,按以下步骤处理即可达到命名要求:
- 先从全路径中剥离纯文件名,去掉
.xlsx后缀 - 按文件名的分隔规则截取第一个标识词
- 按照「文件名第一个词 + 指定工作表名 + df」的规则拼接数据框名称
- 读取对应文件的指定工作表,将变量赋值到全局环境
可直接运行的代码
注意:把代码里的路径、目标工作表名替换成自己的实际参数即可
library(purrr) library(readxl) # --------------- 按需修改以下配置 --------------- data_folder <- 'C:/Users/example/Drive/Desktop/Total_Related_Data/Analysis of Data/' target_sheet_name <- "Balance" # 所有文件中要批量读取的工作表名称 name_sep <- " " # 文件名里的词分隔符,默认是空格,如果是下划线就改成"_" # ----------------------------------------------- # 获取文件夹下所有xlsx文件的全路径 all_excel_files <- list.files( path = data_folder, pattern = "*.xlsx", full.names = TRUE, recursive = FALSE ) # 批量读取并按规则命名 walk(all_excel_files, ~{ # 提取不带路径的纯文件名(含后缀) file_with_ext <- basename(.x) # 去掉.xlsx后缀,得到纯文件名 file_clean <- sub("\\.xlsx$", "", file_with_ext) # 截取文件名第一个词 first_tag <- strsplit(file_clean, split = name_sep)[[1]][1] # 拼接最终数据框名称 df_final_name <- paste(first_tag, target_sheet_name, "df", sep = " ") # 读取指定工作表,赋值到全局环境 assign( x = df_final_name, value = read_excel(.x, sheet = target_sheet_name), envir = globalenv() ) })
补充说明
- 代码用base R自带的
basename()提取文件名,不需要额外安装依赖包,适配Windows/macOS不同系统的路径分隔规则 - 不需要提前单独生成不带路径的文件名列表,遍历文件时同步处理即可,避免两个列表长度、顺序不匹配导致命名错配
- 如果需要批量读取多个不同名称的工作表,只需要在现有逻辑外再套一层遍历工作表名的循环即可,命名规则同步调整就行
内容的提问来源于stack exchange,提问作者Data
相关产品推荐
相关产品推荐

