 
 
 
 
 
 
Re: "mapping" functions over lists, again!
- To: mathgroup at smc.vnet.net
- Subject: [mg96278] Re: "mapping" functions over lists, again!
- From: dh <dh at metrohm.com>
- Date: Tue, 10 Feb 2009 05:56:29 -0500 (EST)
- References: <gmp0q7$c0j$1@smc.vnet.net>
Hi Paul,
you may extract the part you want to change, do some manipulation on nit 
(here mapping "f") and write it back:
shortTestdata[[All, All, -1]] =
   Map[f, shortTestdata[[All, All, -1]], {2}];
hope this helps, Daniel
Paul Ellsmore wrote:
> I am a novice, and I have asked this question before (or tried to) and
> thought that the answers I got would work, and that I understood them, =
> but
> now I realize that I didn=92t ask quite the question I thought I had, =
> and
> didn=92t understand the answers. So=85
> 
> 
> 
> I have data in the form:
> 
> 
> 
> shortTestdata = {{{40,28.0678 +1.20855 =E4},{43.094,28.0572 +1.29852
> =E4},{46.428,28.0553 +1.40023 =E4},{50.019,28.0551 +1.50876 =
> =E4},{53.888,28.0573
> +1.62452 =E4},{58.057,28.0565 +1.75026 =E4}},{{40,7.42169 +0.219859
> =E4},{43.094,7.4084 +0.234353 =E4},{46.428,7.40377 +0.252135 =
> =E4},{50.019,7.40131
> +0.271599 =E4},{53.888,7.40048 +0.292062 =E4},{58.057,7.39994 +0.314501
> =E4}},{{40,1685.53 +0.0480998 =E4},{43.094,1694.69 -0.0913363 =
> =E4},{46.428,1698.27
> -0.0273182 =E4},{50.019,1699.76 -0.0491538 =E4},{53.888,1700.52 =
> -0.217922
> =E4},{58.057,1701.16 -0.242314 =E4}},{{40,1808.7 -0.00628662 =
> =E4},{43.094,1808.52
> -0.114076 =E4},{46.428,1808.53 -0.0244589 =E4},{50.019,1808.44 -0.106166
> =E4},{53.888,1808.48 -0.176297 =E4},{58.057,1808.63 -0.289451 =E4}}} =
> that is to
> say, lists of pairs of real and complex values. Note that I mean a list =
> of
> lists (four lists in the above case). I need to keep the integrity of =
> these
> lists, while doing operations on them.
> 
> 
> 
> In particular, I want to be able to turn every pair {real, complex} into
> {real, f[complex]}. It was suggested to me that I use Cases, as follows:
> 
> 
> 
> Realpart = Cases[shortTestdata,{r_Real,c_Complex}=A6{r,Re[c]}] . If I =
> apply
> this to the first list in shortTestdata, i.e {{40,28.0678 +1.20855
> =E4},{43.094,28.0572 +1.29852 =E4},{46.428,28.0553 +1.40023 =
> =E4},{50.019,28.0551
> +1.50876 =E4},{53.888,28.0573 +1.62452 =E4},{58.057,28.0565 +1.75026 =
> =E4}} I get:
> 
> 
> 
> {{43.094,28.0572},{46.428,28.0553},{50.019,28.0551},{53.888,28.0573},{58.=
> 057
> ,28.0565}}
> 
> 
> 
> This seems to miss out the first data pair of the list. Am I making a
> mistake with the syntax?
> 
> 
> 
> I thought that the following would work for the full lists of lists:
> 
> 
> 
> realpart=Cases[shortTestdata,{r_Real,c_Complex}=A6{r,Re[c]},2] i.e =
> apply the
> rule to all parts at level 2 of shortTestdata, but I get:
> 
> 
> 
> {{43.094,28.0572},{46.428,28.0553},{50.019,28.0551},{53.888,28.0573},{58.=
> 057
> ,28.0565},{43.094,7.4084},{46.428,7.40377},{50.019,7.40131},{53.888,7.400=
> 48}
> ,{58.057,7.39994},{43.094,1694.69},{46.428,1698.27},{50.019,1699.76},{53.=
> 888
> ,1700.52},{58.057,1701.16},{43.094,1808.52},{46.428,1808.53},{50.019,1808=
> .44
> },{53.888,1808.48},{58.057,1808.63}}
> 
> 
> 
> This still misses the first pair of each list, and now flattens the
> structure, so I don=92t know where my four lists start and end any more! =
> I
> have tried Map with Cases but frankly have no idea what the syntax =
> should
> look like, and either get error messages or empty lists as output. The
> documentation shows no examples of Map on a list of lists, so maybe it =
> is
> simply not possible?
> 
> 
> 
> This is just a specific example of a difficulty I am having =
> understanding
> how Mathematica deals with lists of lists. In general I would like to be
> able to =93Map=94 functions over these lists of lists, to make =
> transformations
> such as {real, complex} -> {real, f[real, complex]} but I just cannot =
> figure
> out how to do this. Note that my datasets can be of varying length =96 =
> that
> is, the number of lists in shortTestdata can vary, and those lists will =
> not
> in general be all of the same length, so Flatten and Partition are not
> convenient to use, and I really do need the list of lists structure.
> 
> 
> 
>  Any help would be very gratefully received.
> 
> 
> 
> Thanks,
> 
> 
> 
> Paul.
> 
> 
> 
> Dr. Paul A. Ellsmore
> 
> 
> 
> Nanion Limited
> 
> Oxford Centre for Innovation
> 
> Mill Street
> 
> Oxford
> 
> United Kingdom
> 
> OX2 0JX
> 
> 
> 
> Tel: +44 (0) 1865 811175
> 
> Fax: +44 (0) 1865 248594

