cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Sign-in to the JMP Community will be unavailable intermittently Dec. 6-7 due to a system update. Thank you for your understanding!
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.
  • JMP 19 is here! Learn more about the new features.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
abdulj
Level IV

How to create variable names depending on loop number

Hello

I am trying to create variables dynamically depending on the number of times my loop runs. How can I go about doing this?

Example

for(i=1, i<x, i++,

    

     //some code goes here

    

     var || i = current data table();   //This obviously does not work, but I hope you get the idea. I would eventually like to have var1, var2, var3, etc... till the loop is done

    

     )

Does this make sense?

thanks

1 ACCEPTED SOLUTION

Accepted Solutions
michaelhaslam_p
Level III

Re: How to create variable names depending on loop number

Abdulj,

 

Here is one way using Eval ( Substitute ( ))

 

// dv = dummy variable
x = 10;
For( i = 1, i <= x, i++,
	Eval(
		Substitute(
				Expr(
					dv_variable = i;
					Show( dv_variable );
				),
			Expr( dv_variable ), Parse( "Variable Name " || Char( i ) )
		)
	)
);

 

Michael

View solution in original post

8 REPLIES 8
michaelhaslam_p
Level III

Re: How to create variable names depending on loop number

Abdulj,

 

Here is one way using Eval ( Substitute ( ))

 

// dv = dummy variable
x = 10;
For( i = 1, i <= x, i++,
	Eval(
		Substitute(
				Expr(
					dv_variable = i;
					Show( dv_variable );
				),
			Expr( dv_variable ), Parse( "Variable Name " || Char( i ) )
		)
	)
);

 

Michael

Byron_JMP
Staff

Re: How to create variable names depending on loop number

Wasn't there a talk on this at the Advanced Scripting Panel discussion at the JMP Discovery conference Last week? It was a great seminar, I wonder if the author posted any notes on his talk.

JMP Systems Engineer, Health and Life Sciences (Pharma)
David_Burnham
Super User (Alumni)

Re: How to create variable names depending on loop number

Here is an alternate notation:

For( i = 1, i <= x, i++,
	Eval( Parse( Eval Insert( "\[
        var^i^ = Current Data Table()
    ]\" ) ) )
) 

-Dave

-Dave

Re: How to create variable names depending on loop number

Dave,

I've never seen that syntax before, do the ^ surround any variable to include in text?  I would have written:

tmp = "var" || char(i) || " = Current Data Table()";

eval(parse(tmp))

This is obviously less efficient than what you've written.

David_Burnham
Super User (Alumni)

Re: How to create variable names depending on loop number

Yes enclose each variable with ^ ... ^ and have the jsl statement enclosed in the Eval( Parse( Eval Insert("\[ ...  ]\"))) pattern.

For example, the following code sets spec limits for a column:

Open("$SAMPLE_DATA/Big Class.jmp");

cHeight = Column("height");

Column("height") << Set Property( "Spec Limits", {LSL(55), USL(75), Target(65)} );

Let's say we have the following variable assignments that we would like to use:

colName = "height";

lower = 55;

upper = 75;

target = 40;

Then we can write:

Eval( Parse( Eval Insert("\[

  Column("^colName^") << Set Property( "Spec Limits", {LSL(^lower^), USL(^upper^), Target(^target^)} );

]\")))

-Dave

-Dave
abdulj
Level IV

Re: How to create variable names depending on loop number

thanks guys!

KinKame
Level IV

Re: How to create variable names depending on loop number

oh nice .... thank you very much. Another thing I need to learn in JMP ...

Re: How to create variable names depending on loop number

Why create a new variable for each reference? Why not store the data table reference in a list for access by index or an associative array for access by key?

Recommended Articles