You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Studio读取合并多个sbir_award系列Excel文件结果为空求助

核心错误点

你的代码存在三个直接导致读取失败的问题:

  • 文件匹配逻辑错误:list.files()的pattern参数仅用于匹配文件名,不能把目录路径写在pattern里;同时你写的匹配规则sbir_award_.xlsx没有适配文件名里的数字后缀(1、2...),完全匹配不到你的目标文件,返回的文件列表本身就是空值。
  • 对象名不统一:你把list.files()的返回值赋值给了sbir对象,后续lapply调用时却用了从未定义的file.list,代码运行会直接触发对象不存在的报错。
  • 读取函数调用错误:你加载的是readxl包,但代码里写的read.xlsx是openxlsx包的函数,未加载对应包的情况下函数无法正常运行。
修正后可直接运行的代码
library(tidyverse)
library(readxl)

# 第一步:正确获取所有目标文件的完整路径
file_list <- list.files(
  path = "data/raw/sbir",
  pattern = "^sbir_award_.*\\.xlsx$", # 匹配所有sbir_award_开头的xlsx文件,适配数字后缀
  full.names = TRUE # 必须开启,返回完整路径,否则读取函数找不到文件位置
)

# 第二步:批量读取并直接按行合并为一个数据集
sbir_total <- map_dfr(
  .x = file_list,
  .f = ~read_excel(.x)
)
异常排查方案

如果运行上述代码仍无法正常生成数据集,按以下顺序排查:

  • 单独运行print(file_list),如果输出结果为character(0),说明路径配置错误或文件名匹配规则不对,手动核对目标文件夹下的文件后缀是不是.xlsx、有没有文件名拼写错误。
  • 如果文件列表输出正常,但读取时报错,可在read_excel中添加参数col_types = "text",先将所有列按文本格式读入,避免不同子文件同列数据格式不一致导致的读入失败、列错位问题,合并完成后再单独转换列类型即可。
  • 不要混用不同包的Excel读取函数,read_excel(来自readxl)和read.xlsx(来自openxlsx)的参数逻辑、默认读入格式存在差异,统一使用你已经加载的readxl包内函数即可。

内容的提问来源于stack exchange,提问作者econ_grad12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:39:41