Re: Pure Function within a pure function
- To: mathgroup at smc.vnet.net
- Subject: [mg59305] Re: [mg59269] Pure Function within a pure function
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Fri, 5 Aug 2005 01:21:31 -0400 (EDT)
- Reply-to: hanlonr at cox.net
- Sender: owner-wri-mathgroup at wolfram.com
rawdata={
{{time1 ,pt1-1 ,pt1-2 ,pt1-3 },
{time2 ,pt2-1, pt2-2 ,pt2-3} ,
{time3 ,aborted!}},
{{time1 ,pta-1 ,pta-2 ,pta-3 },
{time2 ,aborted!}}};
Use a helper function
filter[x_List]:=Select[x,Length[#]==4&];
filter/@rawdata
{{{time1, pt1 - 1, pt1 - 2, pt1 - 3},
{time2, pt2 - 1, pt2 - 2, pt2 - 3}},
{{time1, pta - 1, pta - 2, pta - 3}}}
or just delete the aborted data
rawdata/.{_,aborted!}:>Sequence[]
{{{time1, pt1 - 1, pt1 - 2, pt1 - 3},
{time2, pt2 - 1, pt2 - 2, pt2 - 3}},
{{time1, pta - 1, pta - 2, pta - 3}}}
%==%%
True
Bob Hanlon
>
> From: ggroup at sarj.ca
To: mathgroup at smc.vnet.net
> Date: 2005/08/04 Thu AM 02:07:53 EDT
> Subject: [mg59305] [mg59269] Pure Function within a pure function
>
> Hi,
>
> I'm wondering if it is possible to define a pure function within a
> function, and if so, what syntax should I be using?
>
> I have some data that I want to filter, say:
>
> rawdata[[1]]=
> time1 pt1-1 pt1-2 pt1-3
> time2 pt2-1 pt2-2 pt2-3
> time3 aborted!
>
> rawdata[[2]]=
> time1 pta-1 pta-2 pta-3
> time2 aborted!
>
> I have a list of such data sets, and I want to apply a filter to remove
> the "aborted" lines to each set. With a table command, this is fairly
> easy:
>
> data = Table[
> Select[rawdata[[i]],Length[#]==4&],
> {i,Length[rawdata]}
> ]
>
> For readability (and lets face it, for pure asthetic value), I was
> hoping to convert this to a function which I could map onto my rawdata
> array. I tried something like:
>
> data = Select[#, Length[#]==4&]& /@ rawdata;
>
> But this doesn't work. I imagine the confusion is with the comparison
> function Length[#]==4&, but I'm having no luck figuring out how to make
> it less ambiguous.
>
> Any pointers would be much appreciated.
>
> Thanks!
>
> PS: I'm using version 5.2 on Windows.
>
>