我正在尝试编写将从'Inputs_Path'获取文件的代码(目前有6个.csv),将它们组合起来,并将它们输出到'Outputs_Path'
到目前为止,我的代码会很好地读取文件夹中的文件,但是当它碰到我循环的“其他”部分时会中断。
当我输出文件时,它显然只输出第一个输入文件。但我知道输出正在发挥作用。
我得到的错误与文件本身有关..就像我指向错误的地方一样。这是错误消息;
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
这是守则;
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)
for(i in 1:length_file_list){
file_list<- as.character(file_list[i])
#do.call(rbind,lapply(file_list, read.csv, FALSE))
Mortgage_Sims<- read.table(file_list, 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)
任何人对其他部分有任何建议吗?提前致谢
答案 0 :(得分:2)
file_list<- as.character(file_list[i])
您可以在此处将文件列表定义为字符串,在您尝试从“list”的第二个条目中读取的下一轮循环中,该列表现在是一个字符串并获得NA作为结果,
例如,将循环中的file_list重命名为file_name,它应该可以正常工作
file_name<- as.character(file_list[i])
Mortgage_Sims<-read.table(file_name,header=TRUE, sep=",")
答案 1 :(得分:0)
如果您的csv文件具有相同的结构,则以下是数据加载的代码
# 1. Set path to the directory with data files
dir_data <- "..."
# 2. Set counter of loaded csv files
file_index <- 0
# 3. Read all csv files into one data set
for(file_name in list.files(dir_data)){
# 3.1. Define path to csv file
file_path <- paste0(dir_data, file_name)
# 3.2. Load csv file
df_file <- read.csv(file_path)
# 3.3. Increment counter of loaded files
file_index <- file_index + 1
# 3.4. Merge data file with result data set 'df_result'
if(file_index == 1){
df_result <- df_file
} else {
df_result <- rbind(df_result, df_file)
}
}
答案 2 :(得分:0)
有很多方法可以将所有CSV文件合并为一个DF。
setwd("C:/your_path_here")
fnames <- list.files()
csv <- lapply(fnames, read.csv)
result <- do.call(rbind, csv)
filedir <- setwd("C:/your_path_here")
file_names <- dir(filedir)
your_data_frame <- do.call(rbind,lapply(file_names,read.csv))
filedir <- setwd("C:/your_path_here")
file_names <- dir(filedir)
your_data_frame <- do.call(rbind, lapply(file_names, read.csv, skip = 1, header = FALSE))
filedir <- setwd("C:/your_path_here")
file_names <- dir(filedir)
your_data_frame <- do.call(rbind, lapply(file_names, read.csv, header = FALSE))
#
temp <- setwd("C:/your_path_here")
temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.delim)