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

Tania Oh tania.oh at bnc.ox.ac.uk
Wed Apr 23 11:44:27 CEST 2008


Thank you John.
It was useful to know about this package.

I tried merge_all and I got this error:

Error in .subset2(x, i, exact = exact) : subscript out of bounds

It could be due to the way my data is and I will try the other  
solutions suggested by the other kind souls on this list.

Best wishes,
tania

On 22 Apr 2008, at 19:29, John Kane wrote:

> You might want to have a look at the merge_all
> function in the reshape package.
> --- Tania Oh <tania.oh at bnc.ox.ac.uk> wrote:
>
>> 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
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained,
>> reproducible code.
>>
>
>
>
>       
> __________________________________________________________________
> Be smarter than spam. See how smart SpamGuard is at giving junk  
> email the boot with the All-new Yahoo! Mail.  Click on Options in  
> Mail and switch to New Mail today or register for free at http://mail.yahoo.ca



More information about the R-help mailing list