MathGroup Archive 2011

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

Search the Archive

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





  • Prev by Date: Re: Solve for parameters of a truncated normal
  • Next by Date: Re: Replace in an elegant way
  • Previous by thread: Re: Keeping track of variables used in Mathematica
  • Next by thread: Re: Keeping track of variables used in Mathematica