cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JMP is taking Discovery online, April 16 and 18. Register today and join us for interactive sessions featuring popular presentation topics, networking, and discussions with the experts.
Choose Language Hide Translation Bar
vkessler
Level IV

Get Selected Rows results in error, when using the rows

Hey,

i can´t figure out, why the following results in an error:

 

For( i = 1, i <= N Items(list), i++,
		item = list[i];
		rows = dt << Get Rows Where(
			dt:foo == item
		);
		Column(dt, "bar" )[rows] = "foobar";
);

The error is:

 

"Cannot set value for the column 'bar' because the row number (-1) is not valid.{941}"

 

Can anyone enlighten me?

 

Thank you!

5 REPLIES 5
txnelson
Super User

Re: Get Selected Rows results in error, when using the rows

Here is your script, running with some example data that does not have an issue when running JMP 12 or JMP 14.  What I would check on your data is that column "bar" is defined as a character column.

names default to here(1);
dt=New Table( "Example",
	Add Rows( 3 ),
	New Column( "foo", Character, "Nominal", Set Values( {"a", "", "a"} ) ),
	New Column( "bar", Character, "Nominal", Set Values( {"", "", ""} ) )
);
list = {"a","b"};

For( i = 1, i <= N Items(list), i++,
		item = list[i];
		rows = dt << Get Rows Where(
			dt:foo == item
		);
		Column(dt, "bar" )[rows] = "foobar";
);
Jim
vkessler
Level IV

Re: Get Selected Rows results in error, when using the rows

Thanks for the quick anwser!

The column is correctly defined and i tried many variants now. Converting the matrix to a list and iterating it etc. --> doesn´t work.

 

I know that it should work fine. I actually use "<< Get Rows Where" in the same script and it works.

 

 

However, I now switched to the good old For Each Row loop to do the trick, no problem here.

Re: Get Selected Rows results in error, when using the rows

Is your 'dt' table derived from another table?  I think it may be trying to map a row number from one table to another, but it's hard to say for sure without knowing more about the data.

vkessler
Level IV

Re: Get Selected Rows results in error, when using the rows

Your guess is kind of correct. "dt" is actually the original data table. From there i derive other tables and then identify the items i want to select.

Nowing the items, I return to "dt" and perform "<< Get Rows Where (items i want to get)" to get the row numbers. Then i like to set "dt:colum[rows i got] = ...".

Sorry that i neither can´t explain it better or provide the data.

Re: Get Selected Rows results in error, when using the rows

I think this error can come about due to the current data table.  The script below will error, but if you comment out the Current Data Table(dt) line, it works as expected.  I'm not sure why this works this way - we will look into it further to see if changes are possible to avoid the need to change the Current Data Table().

 

dt=Open("$SAMPLE_DATA/Big Class.jmp");
dt<<Select Where(:sex == "M");
dtm = dt<<Subset(Selected Rows, Link To Original Data Table(1));
// Current Data Table(dt);
rows = dt << Get Rows Where(:age == 15);
Column(dt, "name")[rows] = "foobar";