Re: Re; Reordering lists?!
- To: mathgroup at smc.vnet.net
- Subject: [mg4596] Re: Re; Reordering lists?!
- From: jmc34318 at jetson.uh.edu (Manuel)
- Date: Wed, 21 Aug 1996 03:25:17 -0400
- Organization: University of Houston
- Sender: owner-wri-mathgroup at wolfram.com
On 2 Aug 1996 06:05:17 GMT, Hein Hundal <hundal at vicon.net> wrote: >Andre and Alain wrote: >> >> Hey! I have a list of Numbers, 1 to 4, and wish to rescale them so >> that 1 replkaces 4 and 3 replaces 2 and 2 replaces 3 etc. I made a little >> code to do this on an element per element basis and it doesn't seem to do >> it! Could someone let me know what I'm doing wrong or whether it's a Mma >> problem? Thanks >> >> <The original list> >> >> gsub=Flatten[ColumnTake[gcsq,{4}]] >> {2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 3, 1, 1, 2, 1, 2, 1, 2, 1, 1, >> 1, 1, 2, 1, 2, 1, 3, 1, >> 2, 2, 1, 2, 1, 2, 3, 2, 4, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 2, >> 3, 2, 2, 2, 1, 2, 1, >> 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1} >> >> <Frequencies of the list> >> >> Frequencies[gsub] >> {{42, 1}, {34, 2}, {4, 3}, {1, 4}} >> >> <The code that replaces them> >> >> Do[If[gsub[[n]]==1,gsub[[n]]=4]|| >> If[gsub[[n]]==2,gsub[[n]]=3]|| >> If[gsub[[n]]==3,gsub[[n]]=2]|| >> If[gsub[[n]]==4,gsub[[n]]=1], >> {n,1,Length[gsub]}] >> >> <It doesn't work properly?!> >> >> Frequencies[gsub] >> {{43, 1}, {38, 2}} >> >> Of course the new list frequencies should be exactly opposite than the first >> one. Help please?! >> Thanks >> Andre Bindon >> Ablerta Hospital Edmonton > >The function you have built works well for values of 3 and 4, but for a value of 1 (or 2), >the clause If[gsub[[n]]==1,gsub[[n]]=4] converts the 1 into a 4 and returns the value 4. If >this clause returned True then the program would go on to the next value of n, but because 4 >is returned, the remaining If clauses are evaluated. So, If[gsub[[n]]==4,gsub[[n]]=1] >converts the 4 back into a 1. To Fix your code, you could have the If[]'s return True when >their test is true. >Do[ >If[gsub[[n]]==1,gsub[[n]]=4;True]|| >If[gsub[[n]]==2,gsub[[n]]=3;True]|| >If[gsub[[n]]==3,gsub[[n]]=2;True]|| >If[gsub[[n]]==4,gsub[[n]]=1;True], >{n,1,Length[gsub]}] > >There are many other ways to achieve the same goal. For example: > >gsub /. Table[ a -> (5-a), {a,4}] > > >Hein Hundal > > > I'm not sure exactly want you want to do, but it sounds like Reverse[list] where list is the name of your, well, list. Manuel. jmc34318 at jetson.uh.edu ==== [MESSAGE SEPARATOR] ====