Re: Converting a string to a variable name
- To: mathgroup at smc.vnet.net
- Subject: [mg90332] Re: Converting a string to a variable name
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 6 Jul 2008 07:18:52 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <g4ncqd$gh8$1@smc.vnet.net>
Aaron Fude wrote:
> Is it possible to create a variable whose name is contained in another
> variable or a string, something along the lines of
>
> Table[ a="Var"<>ToString[i]; Variable[a] = i^2, {i, 1, 10}]
>
> and end up with variables Var1, ..., Var10?
The function Set has the attributes HoldFirst, so we force the
evaluation of its first argument before the assignment occurs.
The built-in function *Variables* (with an 's') returns a list so we
extract the name with Part and convert the string into a symbol. Then
the immediate assignment can be done as usual.
In[1]:= Table[a = "Var" <> ToString[i];
Set[Evaluate[Variables[a][[1]] // ToExpression], i^2], {i, 1, 10}]
Out[1]= {1, 4, 9, 16, 25, 36, 49, 64, 81, 100}
In[2]:= Do[
Print["Var" <> ToString[i] <> " = ",
"Var" <> ToString[i] // ToExpression], {i, 1, 10}]
During evaluation of In[2]:= Var1 = 1
During evaluation of In[2]:= Var2 = 4
During evaluation of In[2]:= Var3 = 9
During evaluation of In[2]:= Var4 = 16
During evaluation of In[2]:= Var5 = 25
During evaluation of In[2]:= Var6 = 36
During evaluation of In[2]:= Var7 = 49
During evaluation of In[2]:= Var8 = 64
During evaluation of In[2]:= Var9 = 81
During evaluation of In[2]:= Var10 = 100
Regards,
-- Jean-Marc