Subscribe Bookmark RSS Feed

Re: Reference Subset Data Tables Created from a Loop

jgrosjean

New Contributor

Joined:

Jul 15, 2017

I'm having some issues referencing subset data tables made from a loop. The loop works fine and creates data tables named cond1, cond2, etc, but if I try to reference those newly created tables in later code, the script log says it can't find them. Oddly enough if I run my script peicewise, it works just fine. 

 

for(i=1, i<=10, i++,
     Original_table << select where(:Sorting Condition == i);

     dti = Original_table << Subset(
          Output table("cond"||char(i)),
          Selected Rows( 1 ),
          Selected columns only( 0 )
);
);

datatable("cond"||char(i)) << new column("random", numeric, continuous, formula(round(Random Uniform(1,150)),0));

2 REPLIES
markbailey

Staff

Joined:

Jun 23, 2011

It might be simpler to insert the new data table reference dt into a list and then you can subscript or stream over the list when you need to work with a particular data table.

open tables = List();

For( i = 1, i <= 10, i++,
	Original_table << select where( :Sorting Condition == i );
	dti = Original_table << Subset(
		Output table( "cond" || Char( i ) ),
		Selected Rows( 1 ),
		Selected columns only( 0 )
	);
	Insert Into( open tables, dti );
);

open tables[i] << New Column( "random",
	numeric,
	continuous,
	formula( Round( Random Uniform( 1, 150 ) ), 0 )
);
Learn it once, use it forever!
Highlighted
jgrosjean

New Contributor

Joined:

Jul 15, 2017

That works great! Thanks!