Re: Applying a list of functions to a list of arguments
- To: mathgroup at smc.vnet.net
- Subject: [mg57424] Re: [mg57309] Applying a list of functions to a list of arguments
- From: D M Yates <yatesd at mac.com>
- Date: Fri, 27 May 2005 04:57:29 -0400 (EDT)
- References: <786acfdc8ee4d17443dad387c58c6a91@mac.com>
- Sender: owner-wri-mathgroup at wolfram.com
Many thanks to the many people who have provided solutions to my query. The solutions were all variations on two themes, and somewhat surprisingly, one of the two solutions is actually only a partial solution. Partial Solution: ~~~~~~~~~~~~ Inner[Compose , f , a , List] (or a similar suggestion of Inner[#1[#2]& , f , a , List] ) This works fine when the arguments are atomic, but f = { f1 , f2 , f3 } a = { {a1,a2,a3} , {b1,b2,b3} , {c1,c2,c3} } returns {{f1[a1], f2[b1], f3[c1]}, {f1[a2], f2[b2], f3[c2]}, {f1[a3], f2[b3], f3[c3]}} instead of the desired { f1[{a1,a2,a3}] , f2[{b1,b2,b3}], f3[{c1,c2,c3}] } I presume this is because Inner is designed for manipulating tensors, where the observed behaviour is desired. Complete Solution: ~~~~~~~~~~~~~~ MapThread[ #1[#2]&, {f,a} ] which indeed returns the desired result for both atomic lists and lists of lists. Derek Yates On 23 May 2005, at 10:24pm, D M Yates wrote: I have a list of functions, and a list of arguments: For example, f = {f1, f2, f3} a = {a1,a2,a3} I would like to return {f1[a1],f2[a2],f3[a3]} I thought this should easy, but am stumped. Obviously the lists are of equal, but arbitrary length, and the arguments may or may not be atomic expressions. In my particular case, the arguments are likely to be combinations of Real, and List[Real,...], but I hope this is irrelevant. Any suggestions? Many thanks, Derek Yates