It’s World Statistics Day! To honor the theme of the day, the JMP User Community is having conversations about the importance of trust in statistics and data. And we want to hear from you! Tell us the steps you take to ensure that your data is trustworthy.
Choose Language Hide Translation Bar
Highlighted
pmroz
Super User

Simple Matrix Creation Question

I have some code where I need to pass a matrix with one value to highlight one row in a table box:

nw = new window("test",
	tb = table box(
		string col box("Col1", {"aa", "bb", "cc"}),
		number col box("Col2", [1, 2, 3])
	)
);
rm = [2];
tb << set selected rows(rm);

The row number to be highlighted is a variable.  I would like to use the simplest syntax to create the row number matrix using this variable.  These methods don't work:

a = 2;		// Need a matrix holding this variable value
b = [a];	// Doesn't work
c = [expr(a)];	// No
d = [eval(a)];	// No
e = [eval(expr(a))];	// No

These are the methods I came up with that do work:

// Works but so complicated...
f = eval(parse(evalinsert("[^a^]")));	// Yes

// Works too
g = [1];
g[1] = a;	// Yes

Is there a simpler one-liner that I'm missing?  I just want to create a matrix like [2] dynamically.

2 ACCEPTED SOLUTIONS

Accepted Solutions
Highlighted
Jeff_Perkinson
Community Manager Community Manager

Re: Simple Matrix Creation Question

I think the Matrix() function will do what you're looking for:

 

//:*/
a=2;
b=matrix(a);
/*:

[2]

In your original example:

 

a = 2;
nw = New Window( "test",
	tb = Table Box(
		String Col Box( "Col1", {"aa", "bb", "cc"} ),
		Number Col Box( "Col2", [1, 2, 3] )
	)
);
rm = Matrix( a );
tb << set selected rows( rm );
-Jeff

View solution in original post

Highlighted

Re: Simple Matrix Creation Question

The original process was to make a matrix from a scalar, so I guess you are asking how to return a scalar from a matrix. Use subscript to access any element in the matrix.

 

// make 1x1 matrix (one element)
a = [2];

// obtain element with a script using row-wise index or [row,col] coordinate
b = a[1];
b = a[1,1];
Learn it once, use it forever!

View solution in original post

5 REPLIES 5
Highlighted
Jeff_Perkinson
Community Manager Community Manager

Re: Simple Matrix Creation Question

I think the Matrix() function will do what you're looking for:

 

//:*/
a=2;
b=matrix(a);
/*:

[2]

In your original example:

 

a = 2;
nw = New Window( "test",
	tb = Table Box(
		String Col Box( "Col1", {"aa", "bb", "cc"} ),
		Number Col Box( "Col2", [1, 2, 3] )
	)
);
rm = Matrix( a );
tb << set selected rows( rm );
-Jeff

View solution in original post

Highlighted
pmroz
Super User

Re: Simple Matrix Creation Question

Ha - perfect!  Thanks Jeff.

Highlighted
MLT
MLT
Level I

Re: Simple Matrix Creation Question

Hi,

 

How do I perform this concept in reverse?

 

a=[2]

b=2

?

Highlighted

Re: Simple Matrix Creation Question

The original process was to make a matrix from a scalar, so I guess you are asking how to return a scalar from a matrix. Use subscript to access any element in the matrix.

 

// make 1x1 matrix (one element)
a = [2];

// obtain element with a script using row-wise index or [row,col] coordinate
b = a[1];
b = a[1,1];
Learn it once, use it forever!

View solution in original post

Highlighted
ms
Super User ms
Super User

Re: Simple Matrix Creation Question

This works too:

a = 2;
// Concat scalar with empty matrix
b = a || [];
// Same, but in place
a ||= [];

Show(a, b);
/*:

a = [2];
b = [2];

 

 

Article Labels

    There are no labels assigned to this post.