[R] 'For each file in folder F do....'

Duncan Murdoch murdoch at stats.uwo.ca
Sun Nov 27 22:25:05 CET 2005


On 11/27/2005 3:51 PM, Ron Piccinini wrote:
> Hello,
> 
> I have 2700 text files in a folder and need to apply
> the same program/procedure to each individually. I'm
> trying to find how to code something like:
> 
> For each file in <Folder> do {<Procedure>}
> 
> is there an easy way to do this? other suggestions? 
> 
> I have tried to list all the files names in a vector
> e.g.
> 
> 
>>listfiles[1:10,1] 
> 
> 
> 1   H:/Rtest/AXP.txt
> 2    H:/Rtest/BA.txt
> 3     H:/Rtest/C.txt
> 4   H:/Rtest/CAT.txt
> 5    H:/Rtest/DD.txt
> 6   H:/Rtest/DIS.txt
> 7    H:/Rtest/EK.txt
> 8    H:/Rtest/GE.txt
> 9    H:/Rtest/GM.txt
> 10   H:/Rtest/HD.txt
> 
> but R doesn't like statements of type
> 
> 
>>read.table(file=listfiles[1,1])
> 
> 
> since 'file' must be a character string or
> connection...
> 
> Any thoughts?

 From the look of it, the listfiles column that you created has been 
converted to a factor.  You can convert back to character using 
as.character(); the as.is=TRUE parameter in the file reading functions 
will prevent the conversion in the first place, if that's how it happened.

Then something like

results <- list()
for (f in as.character(listfiles[,1])) results[[f]] <- read.table(file=f)

will read all the files and put them in a list.

Duncan Murdoch




More information about the R-help mailing list