Bucle en R para leer muchos archivos

Resuelto DonC asked hace 54 años • 9 respuestas

Me he estado preguntando si alguien sabe una manera de crear un bucle que cargue archivos/bases de datos en R. Digamos que tengo algunos archivos como ese: data1.csv, data2.csv,..., data100.csv.

En algunos lenguajes de programación, puedes hacer algo como esto data +{ x }+ .csv, el sistema lo reconoce como datax.csv y luego puedes aplicar el bucle.

¿Algunas ideas?

DonC avatar Jan 01 '70 08:01 DonC
Aceptado

Sys.glob()es otra posibilidad: su único propósito es la expansión global o comodín.

dataFiles <- lapply(Sys.glob("data*.csv"), read.csv)

Eso leerá todos los archivos del formulario data[x].csven la lista dataFiles, donde [x]no hay nada ni nada.

[Tenga en cuenta que este es un patrón diferente al de la respuesta de @Joshua. Allí, list.files()toma una expresión regular, mientras que Sys.glob()solo usa comodines estándar; Los comodines que se pueden utilizar dependen del sistema; los detalles que se pueden utilizar se pueden encontrar en la página de ayuda ?Sys.glob.]

Gavin Simpson avatar Apr 22 '2011 19:04 Gavin Simpson

Ver ?list.files.

myFiles <- list.files(pattern="data.*csv")

Entonces puedes hacer un bucle myFiles.

Joshua Ulrich avatar Apr 22 '2011 17:04 Joshua Ulrich

Pondría todos los archivos CSV en un directorio, crearía una lista y haría un bucle para leer todos los archivos CSV del directorio en la lista.

setwd("~/Documents/")
ldf <- list() # creates a list
listcsv <- dir(pattern = "*.csv") # creates the list of all the csv files in the directory
for (k in 1:length(listcsv)){
 ldf[[k]] <- read.csv(listcsv[k])
}
str(ldf[[1]]) 
PAC avatar Jun 24 '2013 10:06 PAC