Import data into R with an unknown number of columns?

Viewed 16121

I'm trying to read a text file with different row lengths:

1
1   2
1   2   3
1   2   3   4
1   2   3   4   5
1   2   3   4   5   6
1   2   3   4   5   6   7
1   2   3   4   5   6   7   8

To overcome this problem, I'm using the argument fill=TRUE in read.table, so:

data<-read.table("test",sep="\t",fill=TRUE)

Unfortunately, to assess the maximum row length, read.table reads only the first 5 lines of the file, and generates an object looking like this:

data
   V1 V2 V3 V4 V5
1   1 NA NA NA NA
2   1  2 NA NA NA
3   1  2  3 NA NA
4   1  2  3  4 NA
5   1  2  3  4  5
6   1  2  3  4  5
7   6 NA NA NA NA
8   1  2  3  4  5
9   6  7 NA NA NA
10  1  2  3  4  5
11  6  7  8 NA NA

Is there a way to force read.table to scroll over the whole file to assess the maximum row length? I know a possible solution would be to provide the column number, like:

data<-read.table("test",sep="\t",fill=TRUE,col.names=c(1:8))

But since I have a lot of files, I wanted to assess this automatically within R. Any suggestion? :-)


EDIT: the original file doesn't contain progressive numbers, so this is not a solution:

data1<-read.table("test",sep="\t",fill=TRUE)
data2<-read.table("test",sep="\t",fill=TRUE,col.names=c(1:max(data1))
2 Answers
Related