From: Wilson Bilkovich Date: 2006-10-21T00:41:04+09:00 Subject: Re: problem with reading file On 10/20/06, Li Chen wrote: > Hi folks, > > I read a file in the following format,extract the second column only, > and push them into an array. My problem is that Ruby reads them as > strings(based on array.inspect) but not as numbers so it is impossible > for me to do the calculation. Any comments? > > Thanks, > > Li > > ###filen name: array.text > > > A 1 B > A 2 B > A 3 B > A 4 B > A 5 B > A 6 B > > ... > > ###script > > equire 'enumerator' > > array=Array.new > > File.open('array.text').each{|line| array< > #puts array.inspect > array.each_slice(3){|slice| > average=(slice[0]+slice[1]+slice[2])/(3.0) > puts average > } > > ###output from screen > > C:/Ruby/self/file6.rb:8: undefined method `/' for "123":String > (NoMethodError) > from > c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in > `each_slice' > from C:/Ruby/self/file6.rb:7:in `each' > from C:/Ruby/self/file6.rb:7:in `each_slice' > from C:/Ruby/self/file6.rb:7 > You need to tell Ruby to coerce the strings into integers. array = [] File.open('array.text') do |file| file.each_line do |line| array << line.split[1].to_i end end array.each_slice(3) do |triplet| average = (slice[0]+slice[1]+slice[2])/3.0 puts average end