Bucle en R para leer muchos archivos
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?
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].csv
en 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
.]
Ver ?list.files
.
myFiles <- list.files(pattern="data.*csv")
Entonces puedes hacer un bucle myFiles
.
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]])