Re: Map and functional constructs to replace iterative statements

*To*: mathgroup at smc.vnet.net*Subject*: [mg96882] Re: Map and functional constructs to replace iterative statements*From*: Albert Retey <awnl at gmx-topmail.de>*Date*: Thu, 26 Feb 2009 08:00:32 -0500 (EST)*References*: <go31ba$f47$1@smc.vnet.net>

Andreas wrote: > I have begun to replace Table, Do, While, or For, but in my thinking with Map, Inner, Outer and other functional programming constructs as I learn more about Mathematica. > > But, I'm stuck. I need to figure out how to use Map (or some related approach) when a function needs both a current value and a previous value in a time series, such as a percentage change function (or perhaps more generally stated, when I need to refer to previous values in a series or even previous calculations). But first a simple case: > > percentChange[currentValue_, previousValue_] := 100 * ( currentValue - previousValue) / previousValue > > I know how to apply this iteratively, but how can I do it with Map or some other functional construct? > > Say I have a list: timeSeries > > I thought to try something like this: > > Map[percentChange[?,?], timeSeries] > > but I don't know how what to put in for "?". > > Any help much appreciated. > This is one possibility do what you want: percentChange @@@ Partition[timeseries, 2, 1] Partition will create a list of pairs, @@@ is a short notation for Apply at level 1. You might want to look at the documentation for Partition and Apply for more details... hth, albert