Re: Keeping track of variables used in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg122912] Re: Keeping track of variables used in Mathematica
- From: Dana DeLouis <dana01 at me.com>
- Date: Wed, 16 Nov 2011 04:44:15 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
> a list of custom variables assigned and used in a current notebook Hi. I don't have a great solution for the current notebook. If I have a first workbook with just : a = 2; b = 4; And then a second (the Current Workbook) with: c=6; Names["Global`*"] {a,b,c} Then this returns the Global names from ALL workbooks, and not from the Current Workbook. (ie Just c) There was a suggestion for $NewSymbol, but I had mixed results. Did you or anyone else get this idea to work. Here's what I mean. At the top of a third workbook, the best I came up with is the following: NewNames={}; $NewSymbol=AppendTo[NewNames,#1]&; d=3; e=Range[4]; (* Global has everything *) Names["Global`*"] {a,b,c,d,e,NewNames} (* But NewNames just had d & e, which seems like what we want *) NewNames {d,e} $NewSymbol=. However, one of the drawbacks seems to be that if you recalculate the workbook, then NewNames is reset to {}, and nothing is added since the symbols (d & e) already exists. Does anyone know of the better way to use this function in this manner? If I start yet another workbook, then this is perhaps another option. e=7; f=Range@10; Block[{x,y,z}, y=5.5]; g[x_]:=x^2 Union[Flatten[Apply[List,Extract[First[Apply[List,NotebookGet[],{1}]],Position[First[Apply[List,NotebookGet[],{1}]],RowBox[{_,"=",_}],\[Infinity]]],{1}],1][[All,1]]] {e,f,y} Names["Global`*"] {a,b,c,d,e,f,g,NewNames,x,y,z} Here, g,x,y,z became global variables, but the above code only picked up e,f,y as they were assigned values - within this current notebook. This is not fully tested of course. Perhaps there are better ways ??? = = = = = = = = = Here are the steps I used above. I combined them above to remove the variables. I didn't want to mix these variables with the workbook variables. t=First[Apply[List,NotebookGet[],{1}]]; pos=Position[t,RowBox[{_,"=",_}],\[Infinity]]; Union[Flatten[Apply[List,Extract[t,pos],{1}],1][[All,1]]] = = = = = = = = = HTH :>) Dana DeLouis = = = = = = = = = On Nov 10, 6:56 am, Mark <big.d... at att.net> wrote: > Hello community: > > Does Mathematica have a command that will output or compute a list of custom variables assigned and used in a current notebook / Mathematica session? > > If so, what is the command / expression? > Thanks in advance > Mark