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.

0 Kudos
2 ACCEPTED SOLUTIONS

Accepted Solutions
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

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
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

pmroz
Super User

Re: Simple Matrix Creation Question

Ha - perfect!  Thanks Jeff.

0 Kudos
MLT
MLT
Community Member

Re: Simple Matrix Creation Question

Hi,

 

How do I perform this concept in reverse?

 

a=[2]

b=2

?

0 Kudos

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

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];

 

 

0 Kudos