Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2002
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2002

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

Search the Archive

RE: Help with Select[]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg34730] RE: [mg34631] Help with Select[]
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Tue, 4 Jun 2002 03:41:39 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com


> -----Original Message-----
> From: Kevin Gross [mailto:kc144_nospam at ameritech.net]
To: mathgroup at smc.vnet.net
> Sent: Thursday, May 30, 2002 8:55 AM
> Subject: [mg34730] [mg34631] Help with Select[]
> 
> 
> Hello all,
> 
> I've got data sets that resemble
> 
> setA={
> {{x1,0},{x2,0}},
> {{x3,0},{x4,0}},
> {{x5,1},{x6,0}},
> {{x7,1},{x8,1}}
> };
> 
> setB={
> {{x1,0},{x2,0},{x3,0}},
> {{x4,0},{x5,0},{x6,0}},
> {{x7,1},{x8,0},{x9,1}},
> {{x10,1},{x11,1},{x12,0}}
> };
> 
> Each element of the set is a list of n (x,y) ordered pairs. 
> So n=2 for the
> first set and n=3 for the second set. In general, n will 
> differ between the
> data sets, but can be known. With each set, I want to select 
> those elements
> whose sub-elements all have y=0. This is hard to explain in 
> English, but
> easy to express in Mathematica:
> 
> In:  Select[setA,(#[[1,2]]==#[[2,2]]==0)&]
> Out: {{{x1,0},{x2,0}},{{x3,0},{x4,0}}}
> 
> In:  Select[setB,(#[[1,2]]==#[[2,2]]==#[[3,2]]==0)&]
> Out: {{{x1,0},{x2,0},{x3,0}},{{x4,0},{x5,0},{x6,0}}}
> 
> First, I would like to know how to generate an arbitrary "selection
> function" f[n] so that
> 
> In: Select[setC,f[8]]
> Out: {{{x1,0},...,{x8,0}},{{x9,0},...,{x16,0}},...}
> 
> Is it possible to construct such an f? Or is there a better way of
> accomplishing this task? It seems that perhaps pattern 
> matching might be of
> use, but I haven't gotten too far with it.
> 
> Thanks in advance,
> 
> Kevin Gross
> 
> 

Kevin,

e.g.

In[3]:= Select[setA, 
  Plus @@ Abs[Transpose[#][[2]]] == 0 &]
Out[3]=
{{{x1, 0}, {x2, 0}}, {{x3, 0}, {x4, 0}}}

In[4]:= Select[setB, 
  Plus @@ Abs[Transpose[#][[2]]] == 0 &]
Out[4]=
{{{x1, 0}, {x2, 0}, {x3, 0}}, {{x4, 0}, {x5, 0}, {x6, 0}}}
 
also

In[6]:= Select[setB, 
  With[{s = Transpose[#][[2]]}, 
      s.s == 0] &]
Out[6]=
{{{x1, 0}, {x2, 0}, {x3, 0}}, {{x4, 0}, {x5, 0}, {x6, 0}}}


(The second one has to be modified slightly if you may have complex values.)

--
Hartmut


  • Prev by Date: Re: eliminate some characters inside a file
  • Next by Date: RE: RE: Re: Is it possible to access internal variables?
  • Previous by thread: Re: Fun 7th grade Algebra problem
  • Next by thread: Re: Encapsulated submissions