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

R语言循环读取文件时为DataFrame添加文件名列的报错修正

修正R循环读取文件并添加文件名列的代码

原代码存在三个核心问题:

  • 每次循环直接覆盖df变量,最终只会保留最后一个文件的数据
  • 给file_name列赋值时索引逻辑错误:当前读取的数据集是单个文件的全部内容,不需要用dummy_variable做切片,直接给整列赋值即可
  • dummy_variable的更新逻辑错误,应该累加总行数而非替换为当前文件的行数

修正后的基础循环代码

# 初始化空的总数据框,用于存储所有文件的数据
total_df <- data.frame()

for (file in files) { 
  # 读取单个文件
  current_df <- read.delim(paste('FOLDER/', file, sep=''), sep='\t', header = FALSE)
  # 给当前文件的数据集添加文件名列,所有观测对应同一个文件名
  current_df$file_name <- file
  # 将当前文件的数据追加到总数据框中
  total_df <- rbind(total_df, current_df)
}

更高效的替代方案(用purrr包)

如果追求代码简洁和运行效率,可以使用purrr的map_dfr函数自动合并结果:

library(purrr)
library(dplyr)

total_df <- map_dfr(files, function(file) {
  read.delim(paste('FOLDER/', file, sep=''), sep='\t', header = FALSE) %>%
    mutate(file_name = file)
})

说明

  • 两种方式都会给每个文件的所有观测行添加对应的文件名
  • 基础循环方式适合新手理解,map_dfr方式避免了手动rbind的低效,代码更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:15:21