Re: List of position-specifying functions

*To*: mathgroup at smc.vnet.net*Subject*: [mg102368] Re: [mg102351] List of position-specifying functions*From*: Bob Hanlon <hanlonr at cox.net>*Date*: Fri, 7 Aug 2009 05:28:59 -0400 (EDT)*Reply-to*: hanlonr at cox.net

plist = {2, 5, 4, 6, 3}; f = plist /. p_Integer -> (#[[p]] &) {#1[[2]] & , #1[[5]] & , #1[[4]] & , #1[[6]] & , #1[[3]] & } Presumably you would use this list like this data = Array[d, {Max[plist]}]; res = #[data] & /@ f {d[2], d[5], d[4], d[6], d[3]} This result can be obtained more directly res == (data[[#]] & /@ plist) True res == data[[plist]] True Bob Hanlon ---- Ray Koopman <koopman at sfu.ca> wrote: ============= I have a list of distinct positive integers, such as In[1]:= plist = {2, 5, 4, 6, 3}; I want to convert it to a list of position-specifying functions, such as might be used as the second argument in SplitBy or GatherBy. One way that works is: In[2]:= plist /. p_Integer->(#[[p]]&) Out[2]= { #1[[2]]&, #1[[5]]&, #1[[4]]&, #1[[6]]&, #1[[3]]& } I've been trying to get the same thing using Map, but I haven't been able to do it. Any suggestions?