如何在R中批量导入60个含多工作表的Excel文件?
一次性导入多份含多工作表的Excel文件(列数不同也适用)
当然可以一次性搞定!你已经写好了处理单个文件多工作表的函数,只需要再套一层逻辑,把这个函数批量应用到所有60个文件上就行,完全不用手动重复操作。下面是具体的实现步骤:
步骤1:收集所有Excel文件的路径
先把目标文件夹里的所有Excel文件路径都收集起来,假设你的文件都存在同一个文件夹下,用list.files()就能轻松搞定:
# 替换成你的Excel文件所在的实际文件夹路径 file_folder <- "your/excel/files/folder/path" # 获取所有xlsx格式的文件路径(如果是xls格式,把pattern改成"\\.xls$") all_excel_files <- list.files(path = file_folder, pattern = "\\.xlsx$", full.names = TRUE)
步骤2:扩展你的读取函数
你已经有了读取单个文件所有工作表的read_excel_allsheets函数,现在我们用lapply来批量处理所有文件:
# 保留你已有的读取单文件多工作表的函数 read_excel_allsheets <- function(filename) { sheets <- readxl::excel_sheets(filename) x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X)) names(x) <- sheets x } # 批量读取所有文件的所有工作表 all_imported_data <- lapply(all_excel_files, read_excel_allsheets) # 给外层列表命名为对应的文件名,方便后续快速定位数据 names(all_imported_data) <- basename(all_excel_files)
结果说明
运行完代码后,all_imported_data会是一个嵌套列表:
- 第一层的每个元素对应一个Excel文件,名字就是该文件的文件名
- 每个文件元素内部又包含8个元素,对应该文件的8个工作表,名字是工作表名称
- 每个工作表元素就是对应工作表的数据集(data frame),不管各工作表列数差异多大,都能正常导入,完全不受影响
这样你就一次性完成了所有文件所有工作表的导入,再也不用逐个文件重复操作啦!
补充:如果后续需要对这些数据做进一步处理(比如按工作表名合并不同文件里的同名字工作表),也可以基于这个嵌套列表操作,但如果只是完成导入需求,上面的代码就完全够用了。
内容的提问来源于stack exchange,提问作者Sumaiya Khatun
相关产品推荐
相关产品推荐

