The basic problem is that read.table reads the first 5 lines to determine the number of columns to process, so when reading 'six' it reads up to 0.303 and then on the next read, it assumes that the '0' at the end of line 'six' is the rownames for the next row. Same thing happens with the rest of the read. Might try specifying 'colClasses' with the maximum number of columns that you will be processing, or make sure the largest is first. When you do that, you get:
> x <- read.table(text = > "niner,0.519,0.484,0.467,0.167,0.455,0.311,0.574,0.557,0 + one,0 + two,0.591,0 + three,0.356,0.350,0 + four,-0.098,0.072,0.380,0 + five,0.573,0.408,0.382,0.062,0 + six,0.156,0.232,0.517,0.424,0.303,0 + seven,0.400,0.414,0.611,0.320,0.401,0.479,0 + eight,0.282,0.375,0.512,0.346,0.308,0.463,0.605,0 + nine,0.519,0.484,0.467,0.167,0.455,0.311,0.574,0.557,0" + , row.names = 1 + , nrows = 100 + , sep = ',' + , colClasses = c('character', rep('numeric', 9)) + , fill = TRUE + , flush = TRUE + ) > > x V2 V3 V4 V5 V6 V7 V8 V9 V10 niner 0.519 0.484 0.467 0.167 0.455 0.311 0.574 0.557 0 one 0.000 NA NA NA NA NA NA NA NA two 0.591 0.000 NA NA NA NA NA NA NA three 0.356 0.350 0.000 NA NA NA NA NA NA four -0.098 0.072 0.380 0.000 NA NA NA NA NA five 0.573 0.408 0.382 0.062 0.000 NA NA NA NA six 0.156 0.232 0.517 0.424 0.303 0.000 NA NA NA seven 0.400 0.414 0.611 0.320 0.401 0.479 0.000 NA NA eight 0.282 0.375 0.512 0.346 0.308 0.463 0.605 0.000 NA nine 0.519 0.484 0.467 0.167 0.455 0.311 0.574 0.557 0 > On Mon, Nov 28, 2011 at 7:02 AM, chakri <chakri2...@yahoo.co.in> wrote: > Hi, > > I have a file that looks like this : > > one,0 > two,0.591,0 > three,0.356,0.350,0 > four,-0.098,0.072,0.380,0 > five,0.573,0.408,0.382,0.062,0 > six,0.156,0.232,0.517,0.424,0.303,0 > seven,0.400,0.414,0.611,0.320,0.401,0.479,0 > eight,0.282,0.375,0.512,0.346,0.308,0.463,0.605,0 > nine,0.519,0.484,0.467,0.167,0.455,0.311,0.574,0.557,0 > > I want to create a data matrix out of it, so I tried this : > > x<-read.table('test.csv',fill=TRUE, sep=",",dec=".",row.names=1) > row.names(x) # print row names > output > [1] "one" "two" "three" "four" "five" "six" "0" "seven" "0.479" > [10] "eight" "0.463" "nine" "0.311" > > Even numerics are taken in as row names. What am I missing here ? > > Thanks in Advance > Chakri > > > -- > View this message in context: > http://r.789695.n4.nabble.com/problem-in-reading-file-tp4114955p4114955.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@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. > -- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. ______________________________________________ R-help@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.