Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Re: labeling problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg46442] Re: labeling problem
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Thu, 19 Feb 2004 03:01:49 -0500 (EST)
  • Organization: Universitaet Leipzig
  • References: <c0utqu$e60$1@smc.vnet.net>
  • Reply-to: kuska at informatik.uni-leipzig.de
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

and in Mathematica you can do something like

newSymbol[i_Integer,pre_:"p"]:=ToExpression[pre<>ToString[i]]

how ever this is not very clever to do that because it is very hard
to make a loop over all "pi" symbols or to access all "p1","p2" ...
symbols sequenceial. You should use p[i] instead because it is 
much simpler to loop through the new variables..

And with a construction like

lst = {{a, b}, {c, d}, e, f, {g, h, i}, j, k, {l.m}, {n, o, p}, 
    q, {r, s}, {{t}}};

pos = Position[lst, {_, _, _}]

lst[[Sequence @@ #]] & /@ pos

you don't need a For-loop or what ever to get the values
form the positions.

Regards
  Jens

Janos wrote:
> 
> Before I re-invent the wheel let me ask:
> 
> I need to assign  names to list elements in a nested list based upon
> their position in the nested list.  For example if I have a list:
> 
> lst = {{a,b},{c,d},e,f,{g,h,i},j,k,{l.m},{n,o,p},q,{r,s},{{t}}}
> 
> then
> pos=Position[lst,{_,_,_}] will give me
> 
> {{5}.{9}}
> 
> Now, I am thinking to assign a unique name to the list elements on
> these positions, like p5={g,h,i} and p9={n,o,p}.  I did not find yet
> how to create variable names with concatenation auto-magically from
> program.  In other programming languages I can do something like this:
> 
> var="p"+NumToString[5]
> &var={a,b,c}
> 
> and I could refer to it afterward as p5 and its value would be {a,b,c}.
>   The most handy would be if I could take just the name of the position
> and assign that to it, like:
> For[i=1, i<=Length[pos], i++, NumberToName[pos[[i]]]=lst[[pos[[i]] ]] ]
> 
> and I would get:
> 
> five={g,h,i} and nine={n,o,p}.
> 
> Of course lst[[pos[[i]] ]] where' i' goes from 1 to 2 is somewhat doing
> it but it is a little bit complicated.
> 
> I looked the book and the online documentation but could not find a
> function called NumberToName which would do
> 
> NumberToName[5]
> five
> 
> and vice versa
> 
> NameToNumber[five]
> 5
> 
> Is there such function or procedure in someone's drawer ?
> If not, then what is the right way to get a unique variable name with
> some clear deterministic nature - like above - from Mathematica ?
> 
> Thanks ahead,
> János
> 
> ------------------------------------------
> "There was a mighty king in the land of the Huns whose goodness and
> wisdom had no equal."
> Nibelungen-Lied


  • Prev by Date: Re: Computing sets of equivalences
  • Next by Date: Re: Computing sets of equivalences
  • Previous by thread: Re: labeling problem
  • Next by thread: RE: labeling problem