[R] how to read in multiple files with unequal number of columns

Tania Oh tania.oh at bnc.ox.ac.uk
Tue Apr 22 15:05:01 CEST 2008


Dear all,

I want to read in 1000 files which contain varying number of columns.
For example:

file[1] contains 8 columns (mixture of characters and numbers)
file[2] contains 16 columns etc

I'm reading everything into one big data frame and when I try rbind, R  
returns an error of
"Error in rbind(deparse.level, ...) :
   numbers of columns of arguments do not match"


Below is my code:

all <- NULL
all <- as.data.frame(all)

##read in the contents of the files
for (f in 1:length(fnames)){

       tmp <- try(read.table(fnames[f], header=F, fill=T, sep="\t"),  
TRUE)

       if (class(tmp) == "try-error") {
               next ## skip this file if it's empty/non-existent
        }else{
	       ## combine all the file contents into one big data frame
                all <- rbind(all, tmp)
   }
}


Here is some example of what the data in the files:

L3 <- LETTERS[1:3]
(d <- data.frame(cbind(x=1, y=1:10), fac=sample(L3, 10, replace=TRUE)))

 > str(d)
'data.frame':	10 obs. of  3 variables:
  $ x  : num  1 1 1 1 1 1 1 1 1 1
  $ y  : num  1 2 3 4 5 6 7 8 9 10
  $ fac: Factor w/ 3 levels "A","B","C": 1 3 1 2 2 2 2 1 1 2

my.fake.data <- data.frame(cbind(x=1, y=2))
 > str(my.fake.data)
'data.frame':	1 obs. of  2 variables:
  $ x: num 1
  $ y: num 2


all <- rbind(d, my.fake.data)

Error in rbind(deparse.level, ...) :
   numbers of columns of arguments do not match


I've searched the R-site but couldn't find any relevant solution.I  
might have used the wrong keywords to search, so if this question has  
been answered already, I'd be very grateful if someone could point me  
to the post. Else any help/suggestions would be greatly appreciated.

Many thanks in advance,
tania

D.Phil student
Department of Physiology, Anatomy and Genetics
University of Oxford



More information about the R-help mailing list