Stephopolis
Stephopolis

Reputation: 1795

Multiple files in R

I am trying to manage multiple files in R but am having a difficult time of it. I want to take the data in each of these files and manipulate them through a series of steps (all files receiving the same treatment). I think that I am going about it in a very silly manner though. Is there a way to manage many files (each the same a before) without using 900 apply statements? For example, when is it recommended you merge all the data frames rather that treat each separately? Is there a way to merge more than two, or an uncertain number, as with the way the files are input here? Or is there a better way to handle so many files?

I take files in a standard way:

chosen<-(tk_choose.files(default="", caption="Files:", multi=TRUE, filters=NULL, index=1))

But after that I would like to do several things with the data. As of now I am just apply different things but it is getting confusing. See:

ytrim<-lapply(chosen, function(x) strtrim(y, width=11))
chRead<-lapply(chosen,read.table,header=TRUE)
tmp<-lapply(inputFiles, function(x) stack(fnctn))

etc, etc. This surely can't be the recommended way to go about it. Is there a better way to handle a multitude of files?

Upvotes: 0

Views: 255

Answers (1)

ROLO
ROLO

Reputation: 4223

You can write one function with all operations, and apply it to all your files like this:

doSomethingWithFile <- function(filename) {
    ytrim <- strtrim(filename, width=11))
    chRead<- read.table(filename,header=TRUE)
    # Return some result
    chRead
}

result<-lapply(chosen, doSomethingWithFile)

You will only need to think about how to return the results, as lapply needs to return a list with the same length as the input (chosen, in this case). You could also look at one of the apply functions of the plyr packages for more flexibility.

(BTW: this code is not without errors, but neither is your example... I'll update mine if you give a proper example)

Upvotes: 1

Related Questions