MathGroup Archive 1996

[Date Index] [Thread Index] [Author Index]

Search the Archive

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] ====


  • Prev by Date: Re: Please help quick!
  • Next by Date: Re: Piecewise Functions
  • Previous by thread: Re: Re; Reordering lists?!
  • Next by thread: Re: Reordering lists?!