MathGroup Archive 2005

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

Search the Archive

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.
> 
> 


  • Prev by Date: Re: Integral giving complex answer
  • Next by Date: Re: Default defaults?
  • Previous by thread: Re: Pure Function within a pure function
  • Next by thread: Re: Pure Function within a pure function