Re: Re: How to convert string to variable name
- To: mathgroup at smc.vnet.net
- Subject: [mg39904] Re: Re: How to convert string to variable name
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 11 Mar 2003 02:36:25 -0500 (EST)
- References: <b4gjcq$a4k$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
A general observation on evaluation may be helpful: The normal evaluation for an expression of the form h[e1, e2, ...] = r is to evaluate r then h then e1, e2... , giving, say, h*[e1*, e2*, ... ] = r*. The right hand side, h*[e1*, e2*, ... ], is not evaluated further, even if there is a stored rule that would transform it - otherwise we would not be able to overwrite an exising rule. The rule corresponding to h*[e1*, e2*, ... ] = r* is then stored and r* (actually, r** the value of r*) is returned as the value of the expression. This is why the input Symbol["x"] =13 does not work as desired: Symbol["x"] is not evaluated to x, and a message is generated beause Mathematica takes it that we are trying to redefine Symbol - which is protected. On the other hand Evaluate[Symbol["x"] ]=13 works because Evaluate cancels the holding and special evaluation of the left side so that the evaluation steps become Evaluate[Symbol["x"] ]=13 --> x=3 (store rule) --> 3 Allan --------------- Allan Hayes hay at haystack.demon.co.uk Voice: +44 (0)116 241 8747 Fax: +44 (0)870 164 0565 "Andrzej Kozlowski" <akoz at mimuw.edu.pl> wrote in message news:b4gjcq$a4k$1 at smc.vnet.net... > It does work, but you need to evaluate the left hand side: > > > Evaluate[Symbol["x"]]=13; > > > In[14]:= > x > > Out[14]= > 13 > > Andrzej Kozlowski > Yokohama, Japan > http://www.mimuw.edu.pl/~akoz/ > http://platon.c.u-tokyo.ac.jp/andrzej/ > > > On Sunday, March 9, 2003, at 07:28 pm, Bob Harris wrote: > > > I wrote: > >>> ... for a given string, how can I assign to the variable whose name > >>> is > >>> defined by that string? > > > > and Hermann Schmitt replied: > >> I would do it the following way: > >> ToExpression["z = ....."]; > > > > Thanks, that appears to be what I want. I just have to build a string > > that > > contains the entire assignment. > > > > A couple people suggested using Symbol[], but I don't see how that > > would > > work. For example, > > > > Symbol["x"] = 13 > > > > doesn't create a symbol x with value 13. Instead, it simply produces > > an > > error message informing me that "Tag Symbol in Symbol["x"] is > > Protected." > > > > Thanks, > > Bob H > > > > > > > > > >