[Date Index]
[Thread Index]
[Author Index]
Re: Request for help: working with multi-level lists
*To*: mathgroup at smc.vnet.net
*Subject*: [mg13695] Re: Request for help: working with multi-level lists
*From*: Denis Foo Kune <kune at stsci.edu>
*Date*: Sat, 15 Aug 1998 04:39:25 -0400
*Organization*: Space Telescope Science Institute
*References*: <6qp3mc$al3@smc.vnet.net>
*Sender*: owner-wri-mathgroup at wolfram.com
KCConnolly wrote:
> I have a list of 10 elements, each of which is a list of three elements
> (let's say in each case an integer, a real number, and a string). I am
> looking for the most elegant way to select those first-level elements
> (i.e., the lists) whose integer element is equal to a particular value
> (let's say "1"), and then to obtain the mean of the real number
> elements of the lists selected.
For a moderately elegant solution, you could use a simple recursive
algorithm as the following:
Assuming that your inner list has the following structure: {integer,
float, string}
-Is the list empty?
Yes- return Sum/(N of elements) //The base case
No- continue
-Is integer == key?
Yes- sum=sum+float, N=N+1, and recurse with the rest of the list
No- Restart with the rest of the list.
this algorithm will go through the list only once and return the mean as
demanded.
Now for a quick Mathematica code:
Helper[lst_,key_,s_,n_]:=
If[lst=={}
,s/n
,If[First[First[lst]]==key
,Helper[Rest[lst],key,(s+First[Rest[First[lst]]]),(n+1)]
,Helper[Rest[lst],key,s,n]
]
];
keyMean[lst_,key_]:=Helper[lst,key,0,0]
The last line is just the frontend of the small engine. You can just
call the function as
keyMean[ <list>, <key>]
e.g.:
keyMean[{{1,2.0,"sdafg"},{4,5.3,"sdfg"},{2,34.4,"fdg"},{1,3.8,"dfg"},{7,4.56,
"sgh"}},1]
Note that you can also use MemberQ instead of the long "First[Rest[.."
thing, but if some of your data happen to look like your key, you might
run into problems.
Hope that helps.
:-Denis
Prev by Date:
**Re: High precision numbers and Plot[] ?**
Next by Date:
**Re: Request for help: working with multi-level lists**
Previous by thread:
**Re: Request for help: working with multi-level lists**
Next by thread:
**Re: Request for help: working with multi-level lists**
| |