From: Robert Klemme Date: 2006-10-21T01:20:14+09:00 Subject: Re: problem with reading file On 20.10.2006 17:25, 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 This can be done by an awk style 1liner :-) 18:12:44 [Temp]: cat data A 1 B A 2 B A 3 B A 4 B A 5 B A 6 B 18:13:18 [Temp]: ruby -aF\\t -n -r enumerator -e 'BEGIN{$a=[]}; $a<<$F[1].to_i; END{ $a.each_slice(3){|sl| p sl.inject(0){|a,b|a+b}/3.0}}' data 2.0 5.0 18:13:34 [Temp]: Kind regards robert