[R] Reading in a table with unequal columns
Gabor Grothendieck
ggrothendieck at gmail.com
Tue Nov 15 16:54:01 CET 2005
On 11/15/05, Mike Jones <MikeJones at westat.com> wrote:
> Hi,
>
> Wasn't sure how to explain this problem succinctly in a title. I am
> trying to read in a text file that looks like:
>
> 0 1000 175 1 2 3
> 1 1000 58 0 2 9
> 2 1000 35 0 1 3 10
> 3 1000 300 0 2 4 5 10 11 18
> 4 1000 150 3 5 6
> 5 1000 100 3 4 6 7 18
> 6 1000 50 4 5 7 8
> 7 1000 155 5 6 8 19
> 8 1000 255 6 7 19
> 9 1000 200 1 10 12
> 10 1000 52 2 3 9 11 12 13
> 11 1000 70 3 10 14 15 16 17 18 19
> 12 1000 250 9 10 13
> 13 1000 40 10 12 14
> 14 1000 235 11 13 15
> 15 1000 127 11 14 16 17
> 16 1000 177 11 15 17
> 17 1000 358 11 15 16
> 18 1000 296 3 5 11 19
> 19 1000 120 7 8 11 18
>
> The problem with this is that the 12th row (row with 11 in the first
> column) doesn't get read in correctly. To read into R, I'm using a
> command like:
>
> matrix(unlist(read.table(datafile, sep="",fill=T)),
> ncol=max(count.fields(datafile, sep="")),byrow=F)
>
> but that gives
>
> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
> [1,] 0 19 1000 358 11 14 15 NA NA NA 18
> [2,] 1 1000 1000 296 11 15 16 NA NA NA NA
> [3,] 2 1000 175 120 3 15 17 17 NA NA NA
> [4,] 3 1000 58 1 7 5 16 NA NA NA NA
> [5,] 4 1000 35 0 2 8 11 NA NA NA NA
> [6,] 5 1000 300 0 2 3 11 19 NA NA NA
> [7,] 6 1000 150 0 1 9 NA 18 NA NA NA
> [8,] 7 1000 100 3 2 3 NA NA NA NA NA
> [9,] 8 1000 50 3 5 4 10 NA NA NA NA
> [10,] 9 1000 155 4 4 6 5 NA NA NA NA
> [11,] 10 1000 255 5 5 6 NA 10 NA NA 0
> [12,] 11 1000 200 6 6 7 7 NA 11 NA 1
> [13,] 19 1000 52 1 7 8 8 18 NA 18 2
> [14,] 12 NA 70 2 10 19 19 NA NA NA 3
> [15,] 13 1000 NA 3 3 12 NA NA NA NA 4
> [16,] 14 1000 250 NA 10 9 NA NA NA NA 5
> [17,] 15 1000 40 9 NA 14 11 NA NA NA 6
> [18,] 16 1000 235 10 10 NA 15 12 NA NA 7
> [19,] 17 1000 127 11 12 13 NA 16 13 NA 8
> [20,] 18 1000 177 11 13 14 NA NA 17 NA 9
>
Try this:
nf <- max(count.fields(datafile))
read.table(datafile, fill = TRUE, col.names = 1:nf)
More information about the R-help
mailing list