Re: Mapping to Create Nested Loops
- To: mathgroup at smc.vnet.net
- Subject: [mg119391] Re: Mapping to Create Nested Loops
- From: Heike Gramberg <heike.gramberg at gmail.com>
- Date: Wed, 1 Jun 2011 06:54:38 -0400 (EDT)
Do you want to gather the entries of all the arrays in 3 large lists, or do you want to generate red, blue and green lists for each array separately? In the first case you could try Cases[{myArray1, myArray2, myArray3}, {__, __, #, __, __, __}, Infinity] & /@ {red, blue, green} which searches all levels of {myArray1,...,myArray3} for the given pattern. In the second case you could do something like Function[{lst}, Cases[{lst}, {__, __, #, __, __, __}] & /@ {red, blue, green}] /@ {myArray1, myArray2, myArray3} Then %[[1]] would give you the red, blue, green lists for myArray1, etc. Heike. On 1 Jun 2011, at 09:32, Gregory Lypny wrote: > Hello everyone, > > I'm trying to learn how to use pure functions and mapping to create what amounts to nested loops. > > Suppose I have a 50 x 6 array called myArray. The third element of each row is the word red, blue, or green. If I wanted to break down the array into three according to the value of the third element, I could do this: > > Cases[myArray, {__, __, #, __, __, __}] & /@ {red, blue, green} > > But what if I needed to do this for more than one array? Suppose I had three 50 x 6 arrays as > > myListOfArrays = {myArray1, myArray2, myArray3} or perhaps the arrays might be imported from files. > > > Regards, > > Gregory >