## Use formula for values of matrix elements

Solved
Occasional Contributor
Posts: 11

# 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: 4,240

## 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;
``````

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

## 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
• 329 views
• 0 likes
• 2 in conversation