MathGroup Archive 2006

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

Search the Archive

Re: Using Select within Map

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71784] Re: [mg71758] Using Select within Map
  • From: János <janos.lobb at yale.edu>
  • Date: Wed, 29 Nov 2006 02:56:25 -0500 (EST)
  • References: <200611281104.GAA27919@smc.vnet.net>

On Nov 28, 2006, at 6:04 AM, Mark Teagarden wrote:

> Hi,
>
> I have a data set which comprises several paired lists, like so (I  
> apologize
> if the tabs do not come out correctly in your mail client):
>
> x =
> {
>     {
>         { , },
>         { , },
>         { , }
>     },
>     {
>         { , },
>         { , },
>         { , }
>     },
>     {
>         { , },
>         { , },
>         { , }
>     }
> }
>
> What I would like to do is to select from each of those paired  
> lists, only
> those pairs where the first value in the pair falls within some  
> specified
> range, and then obtain a mean.  This would be simple enough if I was
> operating on a single paired list, for example:
>
> Select[x[[1]],a < #[[1]] < b&]
>
> However, I would like to Map over x so that I would end up with  
> means for
> each of the level 1 lists within x; therein lies the problem.  Both  
> Map and
> Select use the Slot operator (#), and I don't know how to distinguish
> between the slot operator used by Map, and the slot operator used  
> by Select:
>
> Select[#,a < #[[1]] < b&]/@x
>
> Or if you prefer:
>
> Map[Select[#, a < #[[1]] < b&,x]
>
> This problem has been plaguing me for some time, and if I could punch
> through it I would be very happy indeed.  Any ideas?  I have had no  
> luck
> looking through the archives or the Help Browser.  On a similar  
> note, I
> would eventually like to modify this solution so that the criteria,  
> a and b,
> could vary with each level 1 list in x, but one thing at a time...
>
> Thanks in advance,
> Mark
>
> -- 
> Mark A. Teagarden, Ph.D.
> University of Texas at San Antonio
> Department of Biology
> One UTSA Circle
> San Antonio, TX 78249

Here is a newbie way with Table

In[6]:=
a = 2; b = 8;

In[7]:=
lst = Table[Table[
     {Random[Integer, {1, 9}],
      Random[Integer,
       {1, 9}]}, {i, 3}],
    {j, 3}]
Out[7]=
{{{6, 2}, {5, 3}, {9, 8}},
   {{9, 8}, {6, 4}, {2, 9}},
   {{2, 1}, {4, 6}, {4, 7}}}

In[8]:=
Table[Select[lst[[i]],
    a < #1[[1]] < b & ],
   {i, 3}]
Out[8]=
{{{6, 2}, {5, 3}}, {{6, 4}},
   {{4, 6}, {4, 7}}}

János




----------------------------------------------
Trying to argue with a politician is like lifting up the head of a  
corpse.
(S. Lem: His Master Voice)


  • Prev by Date: Re: Using Select within Map
  • Next by Date: Re: Using Select within Map
  • Previous by thread: Using Select within Map
  • Next by thread: Re: Using Select within Map