What you need is the macro expansion operator `=exp' which provides the
inline expression evaluator (see [P] macro).
Here is one way to rename the rows as values of the variable
sysuse auto, clear
keep in 1/10
mkmat mpg, mat(A)
forv i = 1/10 {
local temp`i' = mpg[`i']
matname A `=`temp`i''', row(`i') e
}
matrix list A
Hope this helps,
Scott
> -----Original Message-----
> From: [email protected] [mailto:owner-
> [email protected]] On Behalf Of Herb Smith
> Sent: Wednesday, July 20, 2005 6:09 PM
> To: [email protected]
> Subject: st: Naming rows of matrix
>
> Suppose I want to label the 12th row of a matrix: 1982-83
>
> If I assign this value to a local macro, and then use matname, everything
> is fine:
>
> . local tmp12a="1982-83"
> . matname matrixname `tmp12a', row(12) e
>
> i.e., when I list the matrix, the label is 1982-83
>
> This is a silly way to do things, but now consider the problem where a
> label such as 1982-83 is the 12th case of a variable such
as
> var15 .
>
> . local tmp12b=var15[12]
>
> assigns the string 1982-83 to the new local macro, in the
> sense that
>
> . dis `tmp12b'
>
> displays 1982-83
>
> but the command
>
> . matname matrixname `tmp12b', row(12) e
>
> results in the label: var15[12] being assigned to the 12th row of
> the matrix--not the string associated with this element.
>
> Is there a workaround for this?
>
> Or, more generally, is there a simple way to assign the values of a
> variable to the corresponding rows of a matrix (which is what I am trying
> to do here)?
>
> Thanks in advance,
>
> --Herb Smith
>
>
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/