如何从列表读取.mat文件?R读取文件夹.mat文件报错解决
解决R读取多个.mat文件的报错问题
错误原因
readMat函数(来自R.matlab包)仅支持传入单个文件路径字符串,而你用list.files获取的是包含多个文件名的字符向量,直接传入就会触发Error in file(con, open = "rb") : invalid 'description' argument错误。
修正步骤
- 确保安装并加载
R.matlab包
install.packages("R.matlab") # 首次使用需安装 library(R.matlab)
- 优化文件路径获取逻辑
添加pattern = "\\.mat$"过滤仅获取.mat文件,full.names = TRUE获取完整文件路径(避免工作目录冲突):
target_dir <- "你的目标文件夹路径" # 替换为实际路径,比如"C:/data/mat_files" filenames <- list.files(target_dir, pattern = "\\.mat$", recursive = TRUE, full.names = TRUE)
- 批量读取文件
用lapply遍历每个文件名,逐个读取.mat文件,结果会存放在一个列表中(每个元素对应一个文件的内容):
mat_data_list <- lapply(filenames, function(file_path) { readMat(file_path) })
可选:添加错误处理
如果部分文件读取失败,可加入tryCatch捕获错误并提示,避免整个批量任务中断:
mat_data_list <- lapply(filenames, function(file_path) { tryCatch( expr = readMat(file_path), error = function(e) { message(paste("读取文件失败:", file_path, ",错误信息:", e$message)) return(NULL) } ) })
可选:合并数据(若文件结构一致)
如果所有.mat文件的数据结构相同,可将列表中的数据合并为单个对象:
merged_data <- do.call(rbind, mat_data_list)
内容的提问来源于stack exchange,提问作者thefriendly_plague.doctor
相关产品推荐
相关产品推荐

