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

如何在R语言中将多个CSV文件读取为单个数据框?

如何在R语言中将多个CSV文件读取为单个数据框?

此前已有类似问题的常见处理方式,但和当前需求不同:

  • 将多个CSV文件读取为独立数据框:多数方案使用assign()函数创建多个独立数据框。
  • 创建数据框列表:多数方案通过append(l, df)或l[[i]]=df将数据框添加至列表中。

可复现示例

先将测试用CSV文件写入临时目录:

library(dplyr)
library(tidyr)
library(purrr)
library(purrrlyr)
library(readr)
data_dir <- file.path(tempdir(), "iris")
dir.create(data_dir)
iris %>%
    # 保留Species列,新增分组列用于拆分文件
    mutate(species_group = Species) %>%
    group_by(species_group) %>%
    nest() %>%
    # 按分组写入CSV文件
    by_row(~write.csv(.$data,
                      file = file.path(data_dir, paste0(.$species_group, ".csv")),
                      row.names = FALSE))

执行后,data_dir目录下会生成3个CSV文件,以下是将它们合并为单个数据框的几种常用方法:

方法1:Base R 原生实现

# 获取目录下所有CSV文件的完整路径
csv_files <- list.files(data_dir, pattern = "\\.csv$", full.names = TRUE)

# 逐个读取文件并合并为单个数据框
combined_df <- do.call(rbind, lapply(csv_files, read.csv))

方法2:Tidyverse 工具链实现(推荐)

借助purrr批量读取,dplyr合并数据框,若使用readr的read_csv还能获得更快的读取速度:

library(purrr)
library(dplyr)
library(readr)

# 获取文件路径
csv_files <- list.files(data_dir, pattern = "\\.csv$", full.names = TRUE)

# 读取并合并
combined_df <- csv_files %>%
  map(read_csv) %>%
  bind_rows()

方法3:data.table 实现(适合大数据场景)

data.table的fread读取速度远超基础函数,rbindlist合并效率也更高,适合处理大型CSV文件:

library(data.table)

csv_files <- list.files(data_dir, pattern = "\\.csv$", full.names = TRUE)
combined_df <- rbindlist(lapply(csv_files, fread))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:45:34