MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Indexed Slot in a Rule - How to do it??

  • To: mathgroup at smc.vnet.net
  • Subject: [mg100354] Re: Indexed Slot in a Rule - How to do it??
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Mon, 1 Jun 2009 07:12:31 -0400 (EDT)
  • References: <gvtme0$gct$1@smc.vnet.net>

Hi,

a) is seems to be better to use x[1], x[2], ... instead of x1,x2,..
b)
xvars={x1,x2,x3};

xvars /. sym_ /; StringMatchQ[ToString[sym], "x*"] :>
   Slot[ToExpression[StringDrop[ToString[sym], 1]]]

Regards
   Jens

Alan wrote:
> 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
> 


  • Prev by Date: Re: How can I get the previous Fibonacci calculated
  • Next by Date: Re: two questions
  • Previous by thread: Re: Indexed Slot in a Rule - How to do it??
  • Next by thread: Re: Indexed Slot in a Rule - How to do it??