A question about pattern-matching
- To: mathgroup at smc.vnet.net
- Subject: [mg63728] A question about pattern-matching
- From: gardyloo <gardyloo at mail.wsu.edu>
- Date: Thu, 12 Jan 2006 03:22:37 -0500 (EST)
- References: <djcgcs$6du$1@smc.vnet.net> <200510230946.FAA10826@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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.
- Follow-Ups:
- Re: A question about pattern-matching
- From: gardyloo <gardyloo@mail.wsu.edu>
- Re: A question about pattern-matching
- From: "Carl K. Woll" <carlw@wolfram.com>
- Re: A question about pattern-matching
- From: "Igor C. Antonio" <igora@wolf-ram.com>
- Re: A question about pattern-matching
- From: Sseziwa Mukasa <mukasa@jeol.com>
- Re: A question about pattern-matching
- From: ggroup@sarj.ca
- Re: A question about pattern-matching