MathGroup Archive 2006

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

Search the Archive

Re: A question about pattern-matching

  • To: mathgroup at smc.vnet.net
  • Subject: [mg63730] Re: A question about pattern-matching
  • From: gardyloo <gardyloo at mail.wsu.edu>
  • Date: Thu, 12 Jan 2006 03:22:40 -0500 (EST)
  • References: <djcgcs$6du$1@smc.vnet.net> <200510230946.FAA10826@smc.vnet.net> <43C56577.2000905@mail.wsu.edu>
  • Sender: owner-wri-mathgroup at wolfram.com

As a quick  postscriptum, I found a somewhat similar question in the
Student Support forums, from '99, where a similar problem was called a
"known issue", but I wasn't sure whether I could massage the suggested
solution into a form suitable for my problem.

   Incidentally, I can solve the problem very simply by first extracting
the second column of testList, and then using a pattern replacement on
that, but that's not the spirit of my original question.

                  Thanks,
                        C.O.


gardyloo wrote:

>Hi,  all.
>
>   I am trying to extract certain parts of a dataset, while retaining 
>some of the overall structure. I decided to do it using pattern-matching
>and replacements, but have run into some problems.
>
>First, a small subset of the data:
>
>testList = {{-90, {{60493, 0.061}, {62493, 0.15881}, {64493.5, 
>
>            0.559}}}, {-88, {{62493, 0.151}, {64493., 0.61617}, {65993.4, 
>
>            0.171}, {68993.10, 0.06}}}, {-86, {{62493.75, 0.14}, {64493.55, 
>
>            0.61440}, {65993., 0.18}, {67993, 0.0}, {68993.100, 0.06448}}}};
>
>
>The data consists of lists of the form  { integer, {  ordered pair1,
>ordered pair2, ... } }, and my goal is to extract the second number in
>each of the ordered pairs, while retaining the lists' overall structure.
>So, for example, from testList, I'd want something like
>      { { 0.061, 0.15881, 0.559}, {0.151, 0.61617, 0.171, 0.06}, {0.14,
>0.61440, 0.18,  0.0, 0.06448}}
>returned.
>
>I've tried several patterns, with variously named bits, and only some of
>them make sense to me (and none of them, yet, return what I really
>want). Can someone explain them to me?
>
>I'd expect this one to return the list of lists of ordered pairs. It
>returns the full testList:
>
>testList /. {{(z_)?NumberQ, x:{{_Real, _Real}...}} -> x}
>
>
>On the other hand, this one returns only the lists of ordered pairs:
>
>testList /. {{(z_)?NumberQ, x:{{_, _}...}} -> x}
>
>I thought that one was free to "type" the parts of the pattern to
>return. I also thought that naming the parts rather freely was allowed.
>The first three of the following return what I would expect, but the
>last one, in naming the first of the ordered pairs' elements, returns
>the testList apparently unchanged:
>
>In[54]:=
>
>testList /. {{z_, {x:{_, _}...}} -> z}
>
>testList /. {{z_, {x:{_, _}...}} -> x}
>
>testList /. {{z_, x:{{_, _}...}} -> x}
>
>testList /. {{z_, {x:{a_, _}...}} -> x}
>
>Out[54]=
>
>{-90, -88, -86}
>
>Out[55]=
>
>{{60493, 0.061}, {62493, 0.15881}, {64493.5, 0.559}, {62493, 0.151}, {64493., 0.61617}, 
>
>  {65993.4, 0.171}, {68993.1, 0.06}, {62493.75, 0.14}, {64493.55, 0.6144}, {65993., 0.18}, 
>
>  {67993, 0.}, {68993.1, 0.06448}}
>
>Out[56]=
>
>{{{60493, 0.061}, {62493, 0.15881}, {64493.5, 0.559}}, {{62493, 0.151}, {64493., 0.61617}, 
>
>   {65993.4, 0.171}, {68993.1, 0.06}}, {{62493.75, 0.14}, {64493.55, 0.6144}, {65993., 0.18}, 
>
>   {67993, 0.}, {68993.1, 0.06448}}}
>
>Out[57]=
>
>{{-90, {{60493, 0.061}, {62493, 0.15881}, {64493.5, 0.559}}}, 
>
>  {-88, {{62493, 0.151}, {64493., 0.61617}, {65993.4, 0.171}, {68993.1, 0.06}}}, 
>
>  {-86, {{62493.75, 0.14}, {64493.55, 0.6144}, {65993., 0.18}, {67993, 0.}, 
>
>    {68993.1, 0.06448}}}}
>
>
>    Although a solution would help me a lot, I really would like to know
>what I'm missing in applying these replacement rules.
>
>                Thanks!
>                        Curtis O.
>
>  
>


  • Prev by Date: Re: problems with typesetting in packages
  • Next by Date: Plot PDF of a Discrete Random Variable
  • Previous by thread: Re: A question about pattern-matching
  • Next by thread: Re: A question about pattern-matching