From: cliveharber@... Date: 2007-10-08T21:24:50+09:00 Subject: Re: MATRIX PROBLEMS (AGAIN!) Hi John Instead of this: line.each(',') { |this_record| fields << this_record.chomp(",").strip() # read to the end of the file into 'fields', split into lines and chomp out the delimiter mat1[r,c] = fields[r,c] # the rows and columns in the matrix = rows and columns in fields c=c+1 n=n+1 if c > 19 then # loops through each row/column. At the end of each line where c=19, reset loop onto next row with col = 1 c = 1 end } which I think is the problem, try fields = eval("[" + line + "]") this should turn the string into an array which you can iterate over - this comes from the Hal Fulton book so it should work. HTH Clive ---- John Nott wrote: > Hi everyone, > As a complete new comer to Ruby. I have written this little piece of simple code but I have no idea why it only half works. It creates the matrix as I want it to but instead of populating it using the file as pointed to in file path, it fills it up with empty data!? > > If anyone has any tips on where I may be going wrong I would really really appreciate it! I have remmed the code as best as I can throughout. > > > > print "Importing Planning Sheet: 2004_extrap_Planning_Data\n" > > filepath = 'Q:\\TECH2006\\DBA\\02_LU\\Final TAGM 2007 (working)\\TAGM_666_Current_FROM G_DRIVE\\2004\\2004_extrap_Planning_Data.csv' #the file that contains teh data that i would like to put into the matrix > > > file = File.new(filepath, 'r') # define new file as filepath > > mat1 = OtMatrix.new(649,19) # define new omni trans matrix 649 rows, 19 columns > > fields = Array.new # define fields as a new array to hold data > > r = 1 # matrix row r = first row > n = 0 # n (fields) = 0 > c = 1 # matric column 1 = first column > > while ( !file.eof ) > line = file.gets > line.each(',') { |this_record| > fields << this_record.chomp(",").strip() # read to the end of the file into 'fields', split into lines and chomp out the delimiter > mat1[r,c] = fields[r,c] # the rows and columns in the matrix = rows and columns in fields > c=c+1 > n=n+1 > if c > 19 then # loops through each row/column. At the end of each line where c=19, reset loop onto next row with col = 1 > c = 1 > end > } > > end > > print mat1 > > > > Thanks very much in advance! > > > > ##################################################################################### > This e-mail message has been scanned for Viruses and Content and cleared > by MailMarshal > #####################################################################################