Statistical programming, matrix languages, and more

Use formula for values of matrix elements

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 11
Accepted Solution

Use formula for values of matrix elements

[ Edited ]

Is there a way to write the 5th line below so that it works (while keeping it within a single expression / single line) ?

More generally, how can a vector be initiated by specifying formulas instead of values for each element?

 

proc iml;
	x = j(3,2,.);
	do i = 1 to nrow(x);
		/*this doesn't work*/
		x[i,] = { i 0 };

		/*this does work, but it's an extra line */
		x[i,1] = i;
		x[i,2] = 0;
	end;
quit

Accepted Solutions
Solution
‎08-08-2017 07:49 AM
SAS Super FREQ
Posts: 3,755

Re: Use formula for values of matrix elements

The direct answer to your question is to use the horizontal concatenation operator (||)

x[i,] = i || 0;

as described in the article "How to build a vector from expressions."

 

Of course, for this example, you don't need a loop at all:

proc iml;
x1 = T( 1:3 );
x2 = j(nrow(x1), 1, 0);
x = x1 || x2;

View solution in original post


All Replies
Solution
‎08-08-2017 07:49 AM
SAS Super FREQ
Posts: 3,755

Re: Use formula for values of matrix elements

The direct answer to your question is to use the horizontal concatenation operator (||)

x[i,] = i || 0;

as described in the article "How to build a vector from expressions."

 

Of course, for this example, you don't need a loop at all:

proc iml;
x1 = T( 1:3 );
x2 = j(nrow(x1), 1, 0);
x = x1 || x2;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 264 views
  • 0 likes
  • 2 in conversation