Prev: ruby abstraction
Next: Ruby Shoes: Self-contained?
From: Chad Weier on 18 Jul 2010 01:13 I have an array which is created by reading a csv file time = CSV.parse(File.read('time.csv')) time.csv contains valuea,a,100 valueb,b,200 valuec,c,300 I want to be able to find a particular value but I used time.index 'valuea' and nothing displays. I am pretty sure it is because its an array of arrays eg if i go puts time[0][0] it will display valuea The 2 dimensional array is what I need but I am not sure how to search it. Please help as I am very new at ruby. -- Posted via http://www.ruby-forum.com/.
From: w_a_x_man on 18 Jul 2010 02:48 On Jul 18, 12:13 am, Chad Weier <emily.war...(a)gmail.com> wrote: > I have an array which is created by reading a csv file > > time = CSV.parse(File.read('time.csv')) > > time.csv contains > > valuea,a,100 > valueb,b,200 > valuec,c,300 > > I want to be able to find a particular value but I used > time.index 'valuea' and nothing displays. > > I am pretty sure it is because its an array of arrays > eg if i go puts time[0][0] it will display valuea > > The 2 dimensional array is what I need but I am not sure how to search > it. > Please help as I am very new at ruby. > -- > Posted viahttp://www.ruby-forum.com/. time.find{|x| x[0]=="valuea"}
From: Jean-Julien Fleck on 18 Jul 2010 03:29 Hello Chad, > The 2 dimensional array is what I need but I am not sure how to search > it. If you want to get the index couple, you could do something like this: def index_biarray(biarray,obj) index1 = biarray.index {|a| a.include?(obj)} index2 = biarray[index1].index(obj) return index1,index2 end and to check the behavior: time = [["valuea","a",100],["valueb","b",200],["valuec","c",300]] puts index_biarray(time,"valuea").join(',') puts index_biarray(time,200).join(',') puts index_biarray(time,'c').join(',') Cheers, -- JJ Fleck PCSI1 Lycée Kléber
From: Rob Biedenharn on 18 Jul 2010 16:04 On Jul 18, 2010, at 1:13 AM, Chad Weier wrote: > I have an array which is created by reading a csv file > > time = CSV.parse(File.read('time.csv')) > > time.csv contains > > valuea,a,100 > valueb,b,200 > valuec,c,300 > > I want to be able to find a particular value but I used > time.index 'valuea' and nothing displays. > > I am pretty sure it is because its an array of arrays > eg if i go puts time[0][0] it will display valuea > > The 2 dimensional array is what I need but I am not sure how to search > it. > Please help as I am very new at ruby. There's a particular method that applies in cases like this. You have an array of arrays and you want to find the first array having a given object as *its* first value. This is called an "association list" and you can get the array you want with: irb> time = CSV.parse(File.read('time.csv')) => [["valuea", "a", "100"], ["valueb", "b", "200"], ["valuec", "c", "300"]] irb> time.assoc('valuea') => ["valuea", "a", "100"] -Rob Rob Biedenharn Rob(a)AgileConsultingLLC.com http://AgileConsultingLLC.com/ rab(a)GaslightSoftware.com http://GaslightSoftware.com/
From: Chad Weier on 18 Jul 2010 20:52 Thank you so much. Very helpful I've got the program working! -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: ruby abstraction Next: Ruby Shoes: Self-contained? |