MathGroup Archive 2004

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

Search the Archive

Re: Data Plotting With Less Typing

  • To: mathgroup at smc.vnet.net
  • Subject: [mg45341] Re: Data Plotting With Less Typing
  • From: Steve Eichblatt <steveeichblatt at yahoo.com>
  • Date: Thu, 1 Jan 2004 05:54:33 -0500 (EST)
  • References: <bsrho9$qio$1@smc.vnet.net> <bsu1ec$8h2$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Thanks for all who responded for the tips.

I really like the syntax of this program, and it works great in some 
cases. But there is one problem making it work for my application. If I 
already have an expression called a (or b or c1, etc), then parse makes 
a rule with the EVALUATED form of a (or b, etc) instead of just the 
symbol a (or b...).

That kind of problem is what led me to use StringReplace and put 
everything in quotes. Is there some way around that? I tried things like 
"HoldForm" to prevent evaluation, but i couldn't figure it out.

Thanks again!


Here is an example:

a = Table[Random[Integer, 100], {10}];

parse[d : {__?AtomQ}] := {Thread[ToExpression@data[[1]] -> d]}
parse[expr_] := Flatten[expr /. parse /@ data]
select[expr_] := Flatten@Position[parse@expr, True]
extract[expr_, test_] := parse[expr][[select[test]]]

data = {{"a", "b", "c1", "c2", "d"}, {1.64657, 3.11775, 4.4374, 8.93891,
         1.19198}, {5.5366, 3.5689, 1.32583, 2.6293, 2.38973}, {9.03042,
         9.87567, 4.34064, 8.09357, 3.44279}, {5.43228, 4.7836, 8.12985,
         3.94991, 2.15411}};

parse[Sin[a/b] + c1][[select[d < c2]]]
First[parse /@ data]

gives:

Out[161]=
{c1 + Sin[14/b], c1 + Sin[20/b],
   c1 + Sin[41/b], c1 + Sin[89/b]}

Out[162]=
{{{0, 14, 20, 41, 89, 67, 19, 99, 80, 83} -> a,
b -> b, c1 -> c1, c2 -> c2, d -> d}}


  • Prev by Date: Function interpolation
  • Next by Date: comparing big notebooks with diff
  • Previous by thread: Re: Function interpolation
  • Next by thread: comparing big notebooks with diff