Loop en R para leer muchos archivos

Me he estado preguntando si alguien sabe cómo crear un ciclo que cargue archivos / bases de datos en R. Digamos que tengo algunos archivos como estos: data1.csv, data2.csv, …, data100.csv.

En algunos lenguajes de progtwigción, uno puede hacer algo como este dato + {x} + .csv, el sistema lo reconoce como datax.csv, y luego puede aplicar el bucle.

¿Algunas ideas?

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

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

Eso leerá todos los archivos del formulario data[x].csv en list dataFiles , donde [x] no es nada ni nada.

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

Ver ?list.files .

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

Luego puede recorrer los myFiles .

Colocaría todos los archivos CSV en un directorio, crearía una lista y haría un ciclo 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]]) 
 fi<-list.files(directory_path,full.names=T) dat<-lapply(fi,read.csv) 

dat contendrá los conjuntos de datos en una lista

Lea los encabezados en un archivo para que podamos usarlos para reemplazarlos en un archivo combinado

 library(dplyr) library(readr) list_file <- list.files(pattern = "*.csv") %>% lapply(read.csv, stringsAsFactors=F) %>% bind_rows 

Supongamos que sus archivos tienen el formato de archivo que mencionó en su pregunta y que están ubicados en el directorio de trabajo.

Puede vectorizar la creación de los nombres de archivo si tienen una estructura de nombres simple. A continuación, aplique una función de carga en todos los archivos (aquí utilicé el paquete purrr , pero también puede usar lapply )

 library(purrr) c(1:100) %>% paste0("data", ., ".csv") %>% map(read.csv) 

Esto puede ser útil si tiene conjuntos de datos para participantes como en psicología / deportes / medicina, etc.

 setwd("C:/yourpath") temp <- list.files(pattern = "*.sav") #Maybe you want to unselect /delete IDs DEL <- grep('ID(04|08|11|13|19).sav', temp) temp2 <- temp[-DEL] #Make a list of that contains all data read.all <- lapply(temp2, read_sav) #View(read.all[1]) #Option 1: put one under the next df <- do.call("rbind", read.all) Option 2: make something within each dataset (single IDs) eg get the mean of certain parts of each participant mw_extraktion <- function(data_raw){ data_raw <- data.frame(data_raw) #you may now calculate eg the mean for a certain variable for each ID ID <- data_raw$ID[1] data_OneID <- c(ID, Var2, Var3) #put your new variables (eg Means) here } #end of function data_combined <- t(data.frame(sapply(read.all, mw_extraktion) ) )