Loop in R to read many files
See ?list.files
.
myFiles <- list.files(pattern="data.*csv")
Then you can loop over myFiles
.
I would put all the CSV files in a directory, create a list and do a loop to read all the csv files from the directory in the list.
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]])
Sys.glob()
is another possibility - it's sole purpose is globbing or wildcard expansion.
dataFiles <- lapply(Sys.glob("data*.csv"), read.csv)
That will read all the files of the form data[x].csv
into list dataFiles
, where [x]
is nothing or anything.
[Note this is a different pattern to that in @Joshua's Answer. There, list.files()
takes a regular expression, whereas Sys.glob()
just uses standard wildcards; which wildcards can be used is system dependent, details can be used can be found on the help page ?Sys.glob
.]
Read the headers in a file so that we can use them for replacing in merged file
library(dplyr)
library(readr)
list_file <- list.files(pattern = "*.csv") %>%
lapply(read.csv, stringsAsFactors=F) %>%
bind_rows