Indexed Slot in a Rule - How to do it??
- To: mathgroup at smc.vnet.net
- Subject: [mg100289] Indexed Slot in a Rule - How to do it??
- From: Alan <alan.stone at yahoo.com>
- Date: Sun, 31 May 2009 06:34:01 -0400 (EDT)
Here's the problem. Convert a vector (list) with symbol names into indexed slots. I'm doing this so that I can turn the vector into function that takes a list. Here's an example of the desired behavior: eqs = {0, 5*x1, 1, 10*x3, 3*x2}; convert this to: indexedeqs = {0, 5*#[[1]], 1, 10*#[[3]], 3*#[[2]]}; T[q_]:=indexedeqs; T[{1,2,3}] = {0,5,1,30,6} I can't for the life of me figure out how to do this. I've been performing meta-Mathematica all week. Here's the closest I've come: xvars={x1,x2,x3}; MapIndexed[Rule[#1, #[[First@#2]]] &, xvars] But, this treats the second # literally, and puts in the current item from xvars. I need a way for the second # to just be # without it really taking a value. So, I tried doing it as a string: xvars={x1,x2,x3}; MapIndexed[Rule[#1, "#[[" <> ToString[First@#2] <> "]]"] &, xvars] And this creates a rule that looks correct, but, its right hand side of the rule is a string instead of an expression. I can't figure this out!!! Any help is greatly appreciated. All the best, Alan