Re: Clear subscripted variables
- To: mathgroup at smc.vnet.net
- Subject: [mg58294] Re: Clear subscripted variables
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 26 Jun 2005 01:33:56 -0400 (EDT)
- Organization: The Open University, Milton Keynes, England
- References: <d9ispk$cpd$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Mukhtar Bekkali wrote: > Here is the code (x\_i stands for x subscript i): > > Table[{Print[x\_i = i]; Clear[x]; Remove[x]; Unset[x]; Print[x\_i]}, > {i, 1, 2}] > > I expected that x\_i is cleared at the end of the loop but it isn't > > If I insert Clear[Subscript] in the loop then it is cleared, but not > desirable since it clears all variables with subscripts. > > What command shall I use to clear specific subscripted variables? > > Mukhtar Bekkali > Hi Mukhtar, Subscripted variables are not symbols in Mathematica: *Clear* and *Remove* complain about that whereas *Unset* works. You can use the package *Symbolize* to more or less transform subscripted variables into symbols. For example, In[1]:= \!\(x\_1 = 1\) Out[1]= 1 In[2]:= \!\(x\_1\) Out[2]= 1 In[3]:= \!\(Clear[x\_1]\) From In[3]:= \!\(\* RowBox[{\(Clear::"ssym"\), \(\(:\)\(\ \)\), "\<\"\\!\\(x\\_1\\) is not a \ symbol or a string. \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\ \\\"RefGuideLinkText\\\", ButtonFrame->None, ButtonData:>\\\"Clear::ssym\\\"]\ \\)\"\>"}]\) In[4]:= \!\(Remove[x\_1]\) From In[4]:= \!\(\* RowBox[{\(Remove::"ssym"\), \(\(:\)\(\ \)\), "\<\"\\!\\(x\\_1\\) is not a \ symbol. \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"Remove::ssym\\\"]\\)\"\>"}]\) In[5]:= \!\(FullForm[HoldForm[x\_1]]\) Out[5]//FullForm= HoldForm[Subscript[x,1]] In[6]:= \!\(Unset[x\_1]\) In[7]:= \!\(x\_1\) Out[7]= \!\(x\_1\) In[8]:= Needs["Utilities`Notation`"] In[9]:= \!\(\* RowBox[{"Symbolize", "[", TagBox[\(x\_1\), NotationBoxTag, TagStyle->"NotationTemplateStyle"], "]"}]\) In[10]:= \!\(x\_1 = 2\) Out[10]= 2 In[11]:= \!\(Clear[x\_1]\) In[12]:= \!\(x\_1\) Out[12]= \!\(x\_1\) Hope this helps, /J.M.