Re: Help to clarify 'Map', 'Apply', and 'Thread'.
- To: mathgroup at smc.vnet.net
- Subject: [mg15716] Re: Help to clarify 'Map', 'Apply', and 'Thread'.
- From: phbrf at t-online.de (Peter Breitfeld)
- Date: Fri, 5 Feb 1999 03:42:15 -0500 (EST)
- Organization: das ist ein breites Feld ...
- References: <78uj8q$8gu@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Wen-Feng Shaw <wfshaw at ms23.hinet.net> schrieb:
> Hi experts,
>
> The functions 'Map', 'Apply', 'Thread', and 'MapThread' are very
> useful. However, I am often confused by their functionalities. I often
> should stop to try if a certain expression is correct before coding it
> into my program. Could you help me to clarify them? Thanks a lot!
>
> Best Regards,
>
> Wen-Feng Shaw
>
>
Suppose you have
X={x,y,z}; A={a,b,c};
eq=2x+3y==z
Apply changes the head of the expression: Apply[Subtract,eq]----->
2x+3y-z
or
Apply[Plus,{1,2,3,4}]----->10 (old head was List, new head is Plus)
Map works on the elements in the first level of the expression:
Map[#+3&,eq] ---> 3+2x+3y==3+3 (added 3 on both sides)
MapAt works on the elements at a specified position:
MapAt[k#&,eq,{1,2}]-----> 2x+3ky==z (second element on left side times
k)
Thread is hard to explain, but is changes eg "{a,b,c} operator {x,y,z}"
to "{a operator x, b operator y, c operator z}", so
eq /. Thread[X->A] -----> 2a+3b=c, (eq/.X->A does nothing)
MapThread I have never used, but AFAIK it works on a list of lists.
MapThread[Plus,{X,A}] ----->{x+a,y+b,z+c}
es gruesst
Peter
--
=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=
Peter Breitfeld, Saulgau, Germany (PGP public key: 08548045)