Re: Assigning Values to Many Symbols at Once
- To: mathgroup at smc.vnet.net
- Subject: [mg101736] Re: [mg101699] Assigning Values to Many Symbols at Once
- From: Leonid Shifrin <lshifr at gmail.com>
- Date: Wed, 15 Jul 2009 07:12:49 -0400 (EDT)
- References: <200907141200.IAA05959@smc.vnet.net>
Hi Gregory,
If your symbols don't have values, you can simply use Set:
Table[Symbol["x" <> ToString[i]], {i, 5}] = {1,2,3,4,5}
for instance. If they do have values, this is a bit more work. The following
will do what you presumably want, in both cases:
In[1] =
ClearAll[assignToSymbols];
SetAttributes[assignToSymbols, HoldFirst];
assignToSymbols[base_String, {startIndex_Integer, endIndex_Integer},
values_List] /; endIndex - startIndex + 1 == Length[values] :=
assignToSymbols @@
Append[Unevaluated /@ Thread[
Table[
ToExpression[base <> ToString[i], InputForm, Hold],
{i, startIndex, endIndex}], Hold], values];
assignToSymbols[symbs : {___Symbol}, values_List] /;
Length[Hold @@ symbs] == Length[values] :=
Unevaluated[symbs] = values;
In[2]=
Clear[x1, x2, x3, x4, x5];
assignToSymbols["x", {1, 5}, Range[5]];
{x1, x2, x3, x4, x5}
Out[2] = {1, 2, 3, 4, 5}
In[3] = assignToSymbols["x", {1, 5}, Range[5, 9]]
Out[3] = {5, 6, 7, 8, 9}
Regards,
Leonid
On Tue, Jul 14, 2009 at 5:00 AM, Gregory Lypny
<gregory.lypny at videotron.ca>wrote:
> Hello everyone,
>
> I can create a bunch of symbols on the fly using the Symbol command,
> as in
>
> Table[Symbol["x" <> ToString[i]], {i, 5}]
>
> to get
>
> {x1,x2,x3,x4,x5}
>
> But how can I assign values to these all at once?
>
> Regards,
>
> Gregory
>
>
- References:
- Assigning Values to Many Symbols at Once
- From: Gregory Lypny <gregory.lypny@videotron.ca>
- Assigning Values to Many Symbols at Once