Чтение нескольких файлов csv из папки в единый файл данных в R

У меня есть папка, содержащая 332 CSV файла. Имя файлов выглядит следующим образом: 001.csv, 002.csv, 003.csv,............, 330.csv, 331.csv, 332.csv. Все файлы имеют одинаковое количество переменных и одинаковый формат.

Мне нужно прочитать все файлы в одном фрейме. Я читал каждый, а затем использовал rbind, но это слишком громоздко.

Нужна помощь.

Ответы

Ответ 1

Попробуйте lapply и do.call

file_names <- dir() #where you have your files

your_data_frame <- do.call(rbind,lapply(file_names,read.csv))

Ответ 2

Решение с data.table, ответ берется из другого сообщения в SO, которое я иногда использовал.

library(data.table)  
files <- list.files(path = "/etc/dump",pattern = ".csv")
temp <- lapply(files, fread, sep=",")
data <- rbindlist( temp )

Ответ 3

Вот возможное решение. Возможно, это также можно сделать с помощью функции apply.

path <- "path_to_files"
files <- c(paste("00",2:9,".csv",sep=""),
           paste("0",10:99,".csv",sep=""), 
           paste(100:332,".csv",sep="")
           )
#Read first file to create variables in a data frame
data <- read.csv(paste(path,"001.csv",sep="/"))

#Read remaining files and rbind them to dataset
for (f in files) {
   data <- rbind(data,read.csv(paste(path, files, sep="/")))
}