Re: variables/objects with sequential naming?
- To: mathgroup at smc.vnet.net
- Subject: [mg130183] Re: variables/objects with sequential naming?
- From: Stefano Ugliano <northerndream at gmail.com>
- Date: Mon, 18 Mar 2013 05:34:27 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <ki1641$5v0$1@smc.vnet.net>
Il giorno sabato 16 marzo 2013 08:14:09 UTC+1, Stefano Ugliano ha scritto:
> Dear all,
>
>
>
> the simplest way to explain what I'd like to achieve is to show you the long way I had to go, not knowing how to automate this:
>
>
>
> graph1 = Graph[cities, DeleteDuplicates@edges[[1]]];
>
> graph2 = Graph[cities, DeleteDuplicates@edges[[2]]];
>
> graph3 = Graph[cities, DeleteDuplicates@edges[[3]]];
>
> graph4 = Graph[cities, DeleteDuplicates@edges[[4]]];
>
> graph5 = Graph[cities, DeleteDuplicates@edges[[5]]];
>
> graph6 = Graph[cities, DeleteDuplicates@edges[[6]]];
>
> graph7 = Graph[cities, DeleteDuplicates@edges[[7]]];
>
> ...
>
>
>
> and I think you got the point (no need to paste the whole list!)
>
>
>
> I will of course have the same problem on the way around, when I'll want to obtain a table of values for all my graph1, graph2...
>
>
>
> I used ToString to produce output files with sequential names, but this... no clue! (googling didn't help either)
>
>
>
> Could anywone help?
>
> Thank you
>
> - Stefano
Dear All,
I have recevied some answer to my question that I am posting here. Thank you all, as from each of them I found out some interesting command I did not
know much about.
First of all, the "winning" answer in term of doing exactly what i wanted in the most elegant and simple way one could think of was:
graph = Graph[cities, DeleteDuplicates[#]]& /@ edges
This gives no "graph1, graph2" etc. but working from the graph list one takes graph[[1]] and so on and it's the same, if not better since Mathematica is so good at handling lists
----------
This other answer was interesting as it allows to obtain items with actually the required name:
set [ name_String, val_ ] := ( Clear[name]; Set [ Evaluate [ Symbol [
name ]] , val ] );
setGraph [ k_Integer ] :=
set [ "graph" <> ToString [k], Graph [ cities,
DeleteDuplicates@edges [ [ 1 ] ] ] ];
although I guess the last [[1]] should be [[k]]: problem is, this doesn't work in building the graphs... but the general scheme is quite precious for other cases, I just hope that calling back a variable in the format "name_number" is just as easy, I'm starting to think that lists are *the* solution to this kind of problems..
This one proposed by Waclaw instead works on all the line:
Do[
Set@@{ToExpression["graph"<>ToString@i], Graph[cities,DeleteDuplicates@edges[[i]]]},{i, imax}]
While I still have to try this one
Do[
graph[i] = Graph[cities, DeleteDuplicates@edges[[i]]],{i, imax}]
In any case thanks to all of you who sent me an answer, they were all very appreciated and helpful.
- Stefano