MathGroup Archive 2011

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

Search the Archive

Re: Assigning part of indexed object

On 6/22/11 at 7:29 AM, fabrice.laussy at (Fabrice P.
Laussy) wrote:

>How do you set the part of an indexed object, say:

>m[1] = Range[5];

>is my indexed object (I could have m[2], etc.). Now I want to do
>something like:

>m[1][[1]] = 10;

>with effect of having m[1] read:

>{10, 2, 3, 4, 5}

>but of course the line above evaluates to 1 = 10.

>This could be achieved by having a non-indexed object get in the
>way, e.g., m1=m[1], assign m1 and then return to m[1]=m1, but I
>believe there should a more elegant way.

The key is understanding where the list {1,2,3,4,5} is stored.
You can change m such that m[1][[1]] evaluates to 10 as follows:

In[1]:= m[1] = Range[5];

In[2]:= m[1]

Out[2]= {1,2,3,4,5}

In[3]:= DownValues[m] = ReplacePart[DownValues[m], {1, 2, 1} -> 10];

In[4]:= m[1]

Out[4]= {10,2,3,4,5}

  • Prev by Date: Aw: Re: Is a conditional evaluation of sections of a notebook possible?
  • Next by Date: Automatic Equation Numbering when "save as"Latex
  • Previous by thread: Re: Assigning part of indexed object
  • Next by thread: Re: Assigning part of indexed object