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

使用readRDS从多文件夹导入多RDS文件遇空列表问题排查

问题诊断与修复方案

你的代码返回空列表主要有以下几个核心问题,按优先级排查修复:

1. 文件夹路径引用错误

你在定义folder_paths时,把变量名用引号包裹,导致R将其识别为普通字符串"path_to_cases"和"path_to_controls",而非你之前定义的实际路径变量。这是最可能导致空列表的原因:

# 错误写法
folder_paths <- c("path_to_cases", "path_to_controls")

# 正确写法
folder_paths <- c(path_to_cases, path_to_controls)

2. 文件匹配模式不精准

检查list.files的pattern是否完全匹配你的RDS文件名:

  • 确认文件名是否真的以SEJOUR_BARIA开头、以.RDS结尾(R正则默认区分大小写,若文件是小写.rds,需改为SEJOUR_BARIA.*\\.rds$)
  • 可以单独运行list.files(path_to_cases, pattern = "SEJOUR_BARIA.*\\.RDS$", full.names = TRUE),查看是否返回有效文件路径列表。如果返回空,说明模式不匹配或文件夹内无对应文件。

3. 指定变量不存在于数据集

若文件能正常读取,但目标变量myvar不存在,select(all_of(variable_to_select))会返回空数据框。可以单独读取一个文件验证:

test_file <- list.files(path_to_cases, pattern = "SEJOUR_BARIA.*\\.RDS$", full.names = TRUE)[1]
test_data <- readRDS(test_file)
colnames(test_data) # 查看所有变量名,确认myvar是否存在

修复后的完整代码

path_to_cases <- "1_GROUPE BARIA/..../..../CLEAN DATASETS"
path_to_controls <- "2_GROUPE CONTROLE/..../..../CLEAN DATASETS"

# 引用实际路径变量,去掉引号
folder_paths <- c(path_to_cases, path_to_controls)

variable_to_select <- "myvar"

data_list <- map(folder_paths, function(folder_path) {
  file_paths <- list.files(folder_path, pattern = "SEJOUR_BARIA.*\\.RDS$", full.names = TRUE)
  
  # 添加警告提示,方便排查空文件列表问题
  if(length(file_paths) == 0) {
    warning(paste("未找到匹配文件:", folder_path))
    return(NULL)
  }
  
  map(file_paths, ~ readRDS(.) %>%
        select(all_of(variable_to_select)))
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:42:35