Re: Cases and Nonatomic expression

*To*: mathgroup at smc.vnet.net*Subject*: [mg56732] Re: Cases and Nonatomic expression*From*: dh <dh at metrohm.ch>*Date*: Thu, 5 May 2005 06:01:15 -0400 (EDT)*References*: <d59lfg$6i6$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Hi Swati, Do not use symbols m1,m2.. but function values: m[1],m[2].., this makes automation easier. Further, you want a side effect, therefore, use Scan not Map. If every m[n] would receive at most 1 sublist we could write: Scan[(m[ First[#] ]=#)&,k] If there are more than one sublist, we must take care of the case where m[n] is empty. We can do this be defining that if m[n] is not defined we return the empty list: m[_] = {}. As a precation we first clear m: Clear[m]; m[_] = {}; Scan[(AppendTo[m[First[#]], #]) &, k] This will do the trick. Sincerely, Daniel will do the trick. Swati Shah wrote: > Hi Everyone > > I have a list > k = {{1,1,2,2,3}, {1,2,2,2,3}, {2,3,3,3,3}, {5,2,2,2,1}, {6,1,1,1,1}, > {6,1,1,1,1}} > > If the first element of the sublist is 1 I want to append the sublist to > g1, if it starts with 2 then append g2 or starts with 6 then append to g6 > > I used cases and did the following: > m1 = Cases[k, {1, __}]; > m2 = Cases[k, {2, __}]; > m3 = Cases[k, {3, __}]; > m4 = Cases[k, {4, __}]; > m5 = Cases[k, {5, __}]; > m6 = Cases[k, {6, __}]; > > However, instead of typing each one of these lines separately, it > would be nice to use just a simple Map or something or a for loop (as > I have more than 50 different start values) > > I tried the following 2 ways: > > a) using a for loopFor [i = 1, i < 7, > t = "g" <> ToString [i]; > Print [t]; > t = Cases [k, {i, __}]; > Print [t] > i++] > > However outside the for loop the values of g1..g6 is empty. > > b) I tried using MAP (in the similar way as the for) > > But I get the following error: > Append::normal: Nonatomic expression expected at position 1 in Append[g1,{1, \ > 168, 0.695873, 6.54462, 62.4578, 82.5056}] > > > Any suggestions as to how I can get this working? > > Thanks in advance > > Swati >