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

为何purrr::map()结合load()导入Rda数据集失败?

解决EDGAR Rda文件加载与合并问题

问题根源

你当前的代码报错,核心原因有两个:

  • load()函数的返回值是加载到环境中的对象名称字符串,而非对象本身,所以files列表里存的都是"year.master"这类字符串,不是数据框,自然无法用list_rbind()合并。
  • 每个Rda文件里的对象都命名为year.master,直接用load()加载时,后续文件的对象会覆盖之前的,导致全局环境里只剩最后一个文件的数据。

解决方案

我们需要在加载文件时,把每个Rda里的year.master数据框单独提取出来,存入列表,避免互相覆盖,再进行合并。

步骤1:自定义加载函数

写一个函数,在局部环境中加载文件,提取目标数据框并返回:

load_master_index <- function(file_path) {
  # 创建局部环境,防止覆盖全局环境的同名对象
  local_env <- new.env()
  # 在局部环境中加载Rda文件
  load(file_path, envir = local_env)
  # 返回局部环境中的year.master数据框
  local_env$year.master
}

步骤2:批量加载并合并

调用自定义函数批量加载所有文件,再合并成一个大的数据框:

library(purrr)
library(dplyr)

# 获取所有Rda文件路径
paths <- list.files('Master Indexes', pattern = '[.]Rda$', full.names = TRUE)

# 批量加载,得到数据框列表
master_data_list <- map(paths, load_master_index)

# 合并所有数据框
combined_master_data <- list_rbind(master_data_list)

如果不用tidyverse包,也可以用base R实现:

# 获取文件路径
paths <- list.files('Master Indexes', pattern = '[.]Rda$', full.names = TRUE)

# 批量加载
master_data_list <- lapply(paths, load_master_index)

# 合并数据框
combined_master_data <- do.call(rbind, master_data_list)

这样就能把所有Rda文件里的year.master数据框收集到列表中,最终合并成一个完整的数据框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:50:02