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

在R中如何将多个.csv文件读取为数据框列表而非列表的列表?

解决方案

你调用class(dfs[1])返回list是R列表的索引规则导致的,单括号[n]取列表返回的是包含第n个元素的子列表,本身类型就是list。你可以先用双括号取元素验证:

dfs[[1]] |> class()

如果返回结果为data.frame,说明你当前的dfs已经是符合要求的数据框列表,无需额外修改。

如果确认返回结构确实是列表的列表,可选择以下任意一种方案修正,全程不需要使用显式循环,也不会生成全局环境的独立数据框:

方案1:调整读取逻辑(推荐)

给read.csv套一层匿名函数确保返回值为数据框,建议加上full.names = TRUE避免路径识别异常:

dfs <- list.files(pattern = "^[0-9]", full.names = TRUE) |> 
  lapply(function(path) read.csv(path))

方案2:对已有结果降维

如果已经生成了列表的列表,无需重新读取,直接去掉一层嵌套即可:

  • 基础R实现(无额外依赖)
dfs <- unlist(dfs, recursive = FALSE)
  • purrr实现(语法更简洁)
library(purrr)
dfs <- flatten(dfs)

结果验证

运行以下代码验证最终结构:

# 检查所有元素的类型
sapply(dfs, class)

所有返回值为data.frame即为符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:15:03