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

如何批量导入大量RData文件?RDS导入代码适配遇阻

批量导入RData文件的解决方案

load()和readRDS()的核心区别在于:readRDS()直接返回单个对象,而load()是将文件中存储的所有对象加载到指定环境中,无法直接赋值。要实现批量导入,需要通过临时环境捕获加载的对象,以下是可行方案:

自定义读取RData的函数

先写一个函数,把load()加载的对象转换成可赋值的列表(或单个对象):

方案1:读取文件中所有对象(返回列表)

如果你的RData文件可能包含多个对象,用这个函数:

read_rdata <- function(path) {
  temp_env <- new.env()
  load(path, envir = temp_env)
  as.list(temp_env)
}

方案2:读取单个对象(假设每个文件仅存一个对象)

如果每个RData文件里只有一个数据集,可简化函数直接返回该对象:

read_rdata_single <- function(path) {
  temp_env <- new.env()
  load(path, envir = temp_env)
  temp_env[[names(temp_env)[1]]]
}

批量导入的完整代码

替换原RDS导入代码中的readRDS为自定义函数,同时修改扩展名匹配:

fs::dir_ls(
  path = paste("C:/Users/", Sys.info()["user"],
               "/Dropbox/66_COHORTE_obe/00_RAW_DATA - copie/1_GROUPE BARIA/DIAG/CLEAN DATASET",
               sep = ""),
  glob = "*DIAG*.RData",  # 根据实际扩展名调整,也可以写"*DIAG*.rda"
  type = "file"
) %>% {
  tibble(path = .,
         data = map(., read_rdata))  # 用方案2的话就换成read_rdata_single
} -> all_files_DIAG_CLEAN

说明

  • 临时环境temp_env用来隔离加载的对象,避免污染全局环境;
  • 最终tibble的data列,方案1会存储每个文件的对象列表,方案2直接存储单个数据对象,按需选择即可。

内容的提问来源于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.21 15:53:29