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

使用lapply调用openxlsx::read.xlsx报错invalid 'description' argument

错误原因

  • 核心问题是lapply的参数逻辑完全颠倒:lapply第一个参数是需要迭代遍历的对象,你当前传入的是固定字符串"Table",相当于仅执行1次调用,直接把包含多个文件路径的filenames向量整体传给read.xlsx的xlsxFile参数,而read.xlsx的xlsxFile参数单次仅支持接收单个文件路径,因此触发参数无效报错。
  • 你之前代码能正常运行的唯一可能是:当时目标文件夹下仅有1个xlsx文件,filenames长度为1,刚好符合read.xlsx的参数要求;现在文件夹内xlsx文件数大于1,报错就会触发。
  • 其他可能触发该报错的场景:目标路径下新增了Excel打开时生成的~$开头的临时xlsx文件(会被*.xlsx规则匹配到,属于无效文件)、某个xlsx文件正被你或其他同事打开占用。

修复后的代码

library(openxlsx)

# 统一设置根路径,避免重复填写出错
root_path <- "S:\\YJB\\Shared\\corpdata\\Community Division\\Team\\Divisional BAU\\21. Serious Incidents from June 2021\\Serious Incidents Notification Forms\\All_Data"
# 匹配xlsx文件,同时过滤掉无效的Excel临时文件,full.names参数直接生成完整路径,无需手动拼接
filenames <- dir(root_path, pattern = "^[^~].*\\.xlsx$", full.names = TRUE)
# 遍历所有文件路径,读取每个文件的Table工作表,加异常捕获避免单个文件读取失败导致整个任务崩溃
SheetList <- lapply(filenames, function(x) {
  tryCatch({
    read.xlsx(xlsxFile = x, sheet = "Table")
  }, error = function(e) {
    message(paste("读取文件失败:", x, "错误信息:", e$message))
    return(NULL)
  })
})
# 可选操作:过滤掉读取失败返回的NULL元素
SheetList <- Filter(Negate(is.null), SheetList)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:57:03