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

R语言合并文件夹CSV文件报错:无法打开'NA'文件

问题分析与修正方案

首先看你遇到的报错:

Error in file(file, "rt") : cannot open the connection
In addition: Warning message: In file(file, "rt") : cannot open file 'NA': No such file or directory

这个错误的根源是你在循环里覆盖了存储所有文件名的file_list变量,导致后续循环无法获取正确的文件名:

在循环的第一行你写了:

file_list<- as.character(file_list[i])

第一次循环时,file_list原本是包含6个文件名的向量,执行这行后,它被替换成了第一个文件名的字符串。到第二次循环(i=2)时,file_list已经是单个字符串,file_list[i]就会返回NA,自然无法读取名为NA的文件。


修正后的代码

把覆盖file_list的那行改成用新变量存储当前文件即可:

Inputs_Path <- "C:/MortgageSafe/Cirt2014-1/Sample"
Output_Path <- "C:/MortgageSafe/Cirt2014-1/BatchOutput"
setwd(Inputs_Path)
file_list<-list.files()
length_file_list<-length(file_list)
# 初始化合并数据框
Collated_Sims <- data.frame()

for(i in 1:length_file_list){
  # 用新变量存储当前文件,不要覆盖原file_list
  current_file <- as.character(file_list[i])
  Mortgage_Sims<- read.table(current_file, header=TRUE, sep=",")
  
  if(i == 1){
    Collated_Sims <- Mortgage_Sims
  } else{
    Collated_Sims <- rbind(Collated_Sims, Mortgage_Sims)
  }
}

Collated_Sims[, 1]<- noquote(Collated_Sims[, 1])
setwd(Output_Path)
write.table(Collated_Sims, "Collated Sims.csv", sep=",", row.names=FALSE, quote=FALSE)

更简洁高效的替代写法

其实R里可以不用循环,用lapply批量读取文件再合并,代码更简洁且不易出错:

Inputs_Path <- "C:/MortgageSafe/Cirt2014-1/Sample"
Output_Path <- "C:/MortgageSafe/Cirt2014-1/BatchOutput"

# 读取所有CSV文件并合并
file_list <- list.files(path = Inputs_Path, full.names = TRUE)
Collated_Sims <- do.call(rbind, lapply(file_list, read.csv, header = TRUE))

# 处理第一列
Collated_Sims[, 1] <- noquote(Collated_Sims[, 1])

# 输出结果
write.table(Collated_Sims, file.path(Output_Path, "Collated Sims.csv"), 
            sep=",", row.names=FALSE, quote=FALSE)

这里用full.names = TRUE可以直接获取文件的完整路径,不用切换工作目录,更安全;do.call(rbind, ...)会把所有读取的数据框按行合并。

如果你的文件格式可能有差异,也可以用dplyr::bind_rows,它能自动处理列名不一致的情况:

library(dplyr)
Collated_Sims <- bind_rows(lapply(file_list, read.csv, header = TRUE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:17:33