Re: Selecting Many Things Rather Than Selecting One Thing From Many
- To: mathgroup at smc.vnet.net
- Subject: [mg66202] Re: Selecting Many Things Rather Than Selecting One Thing From Many
- From: Gregory Lypny <gregory.lypny at videotron.ca>
- Date: Thu, 4 May 2006 05:19:57 -0400 (EDT)
- References: <e39k7e$cno$1@smc.vnet.net> <44588406.7040200@gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
I owe you a bottle of wine. And my homework continues.
Thanks,
Gregory
On Wed, May 3, 2006, at 6:20 AM, Jean-Marc Gulliet wrote:
> Gregory Lypny wrote:
>> Hello everyone,
>> I've discovered another use or need for the Select function, which
>> I suspect requires mapping of some sort.
>> In my previous posts, members of this MathGroup kindly showed me
>> how to apply Select to many columns of a matrix at once. For
>> example,
>> (Select[#1, #1 > K & ] & ) /@ Transpose[theMatrix]
>> will pull out all values greater than K, where K is a number such
>> as 100.
>> But suppose now that K is a list of numbers, such as K={34, 876,
>> 199}, and I simply want to extract or identify all of the rows in
>> the first column of theMatrix equal to any one of those numbers.
>> How would I do that? I started with
>> Select[theMatrix, #[[1]]==any element of list K]
>> and I imagine something similar could be applied to the Position
>> function.
>> Any hint would be much appreciated.
>> Gregory
> Hi Gregory,
>
> I think the following expressions will direct you toward what you
> want:
>
> In[1]:=
> lst={{109,168,173,109},{4,143,200,90},{181,162,85,196},{30,
> 108,86,34},{94,127,144,34},{199,109,195,188},{176,
> 34,46,110},{95,27,160,109},{43,
> 71,130,66},{56,148,109,163},{110,43,50,53},{32,34,16,95}};
>
> In[2]:=
> TableForm[lst]
>
> Out[2]//TableForm=
> 109 168 173 109
>
> 4 143 200 90
>
> 181 162 85 196
>
> 30 108 86 34
>
> 94 127 144 34
>
> 199 109 195 188
>
> 176 34 46 110
>
> 95 27 160 109
>
> 43 71 130 66
>
> 56 148 109 163
>
> 110 43 50 53
>
> 32 34 16 95
>
> In[3]:=
> K=100;
> Select[lst,#1[[1]]>K&]//TableForm
>
> Out[4]//TableForm=
> 109 168 173 109
>
> 181 162 85 196
>
> 199 109 195 188
>
> 176 34 46 110
>
> 110 43 50 53
>
> In[5]:=
> K={43,876,199};
> Select[lst,MemberQ[K,#1[[1]]]&]//TableForm
>
> Out[6]//TableForm=
> 199 109 195 188
>
> 43 71 130 66
>
> In[7]:=
> Position[lst[[All,1]],Alternatives@@K]//TableForm
>
> Out[7]//TableForm=
> 6
>
> 9
>
> In[8]:=
> Position[lst,{x_,___}/;MemberQ[K,x]]//TableForm
>
> Out[8]//TableForm=
> 6
>
> 9
>
> Best regards,
> Jean-Marc