Mpizos Dimitris
Mpizos Dimitris

Reputation: 4991

R: Loading data from folder with multiple files

I have a folder with multiple files to load:

enter image description here

Every file is a list. And I want to combine all the lists loaded in a single list. I am using the following code (the variable loaded every time from a file is called TotalData) :

Filenames <- paste0('DATA3_',as.character(1:18))
Data <- list()
for (ii in Filenames){
      load(ii)
      Data <- append(Data,TotalData)
}

Is there a more elegant way to write it? For example using apply functions?

Upvotes: 3

Views: 132

Answers (1)

Stibu
Stibu

Reputation: 15897

You can use lapply. I assume that your files have been stored using save, because you use load to get them. I create two files to use in my example as follows:

TotalData<-list(1:10)
save(TotalData,file="DATA3_1")
TotalData<-list(11:20)
save(TotalData,file="DATA3_2")

And then I read them in by

Filenames <- paste0('DATA3_',as.character(1:2))
Data <- lapply(Filenames,function(fn) {
   load(fn)
   return (TotalData)
})

After this, Data will be a list that contains the lists from the files as its elements. Since you are using append in your example, I assume this is not what you want. I remove one level of nesting with

Data <- unlist(Data,recursive=FALSE)

For my two example files, this gave the same result as your code. Whether it is more elegant can be debated, but I would claim that it is more R-ish than the for-loop.

Upvotes: 1

Related Questions