如何在R中批量读取多个RDS文件并保留文件名?
批量加载指定格式的RDS文件到全局环境
方法一:使用for循环实现
先匹配目标目录下符合命名规则的RDS文件,再循环读取并赋值到全局环境:
# 替换为你的RDS文件存放目录 target_dir <- "~/your_rds_directory" # 获取所有符合命名格式的RDS文件(含完整路径) rds_files <- list.files( path = target_dir, pattern = "^version_\\d+_\\w+\\.RDS$", full.names = TRUE ) # 循环加载每个文件 for (file_path in rds_files) { # 提取不带后缀的文件名作为对象名 obj_name <- tools::file_path_sans_ext(basename(file_path)) # 将读取的RDS对象赋值到全局环境 assign(obj_name, readRDS(file_path), envir = .GlobalEnv) }
方法二:用lapply + list2env简化操作
这种方式更简洁,无需手动写循环:
target_dir <- "~/your_rds_directory" rds_files <- list.files( path = target_dir, pattern = "^version_\\d+_\\w+\\.RDS$", full.names = TRUE ) # 批量读取所有文件到列表,设置列表元素名为对应文件名 rds_objects <- lapply(rds_files, readRDS) names(rds_objects) <- tools::file_path_sans_ext(basename(rds_files)) # 将列表中的对象批量导入全局环境 list2env(rds_objects, envir = .GlobalEnv)
注意事项
- 务必将
target_dir替换为你的实际文件路径 - 正则表达式
^version_\\d+_\\w+\\.RDS$精准匹配你的命名格式,若文件名有特殊变体可适当调整正则 - 执行前可先打印
rds_files确认仅包含需要加载的文件,避免误加载 - 若文件体积较大,批量加载会占用较多内存,注意监控内存使用情况
内容的提问来源于stack exchange,提问作者cristi
相关产品推荐
相关产品推荐

