Posted By: Anonymous
Suppose we have a folder containing multiple data.csv files, each containing the same number of variables but each from different times.
Is there a way in R to import them all simultaneously rather than having to import them all individually?
My problem is that I have around 2000 data files to import and having to import them individually just by using the code:
read.delim(file="filename", header=TRUE, sep="t")
is not very efficient.
Something like the following should result in each data frame as a separate element in a single list:
temp = list.files(pattern="*.csv") myfiles = lapply(temp, read.delim)
This assumes that you have those CSVs in a single directory–your current working directory–and that all of them have the lower-case extension
If you then want to combine those data frames into a single data frame, see the solutions in other answers using things like
If you really want each data frame in a separate object, even though that’s often inadvisable, you could do the following with
temp = list.files(pattern="*.csv") for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))
assign, and to demonstrate (1) how the file name can be cleaned up and (2) show how to use
list2env, you can try the following:
temp = list.files(pattern="*.csv") list2env( lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), read.csv), envir = .GlobalEnv)
But again, it’s often better to leave them in a single list.