While Scott's reply is valid, it will only take care of negative
values and not arbitrary thresholds. Here is a one-liner using the
-mm_cond()- function in Ben Jann's superb -moremata- package (SSC):
************************
mata
thresh = 3
A = (1, 2, 3\ 9, 8, 1)
mm_cond(A :>= J(rows(A), cols(A), thresh), A, J(rows(A), cols(A), 0))
end
************************
T
On Sat, Aug 22, 2009 at 4:13 PM, Scott Merryman<[email protected]> wrote:
> It might be easier to do something like:
>
> mata
> A = 1,2,3 \ -1, -2, -3 \ 5,6,-9
> A
> C = (A + abs(A))/2
> C
> end
>
>
> Scott
>
>
> On Sat, Aug 22, 2009 at 4:52 AM, Marwan
> Elkhoury<[email protected]> wrote:
>> dear statalist,
>>
>> sorry to bother you with this minor pblm but I'm not familiar with the
>> stata mata environment , more familiar with the matlab matrix
>> environment. anyway, I wish to substitute some matrix factor loadings
>> which are negative or small to zero and keep the others identical.
>> Now, I've written naively some piece of codes to do that and it's not
>> working, either because I'm not writing the pgm correctly or not
>> saving it correctly in the right place or not calling the function
>> correctly; so the codes are for stata 10 version and are the following:
>>
>> /* matrix substitution */
>>
>> program mysubsi
>> version 10
>> syntax varname [if] [in]
>> marksample touse
>> mata: mysubsi(string st_matrix("A"), "`touse'")
>> display as txt " C = " as res r(C)
>> end
>>
>>
>> capture mata mata drop mysubsi()
>> mata
>> real matrix mysubsi(real matrix A, real scalar thresh)
>> {
>> real scalar r, c
>> real matrix C
>> r=rows(A)
>> c=cols(A)
>> for(i=1;i<=r;i++) {
>> for(j=1;j<=c;j++) {
>> if (A[i,j]< thresh) {
>> C[i,j] =0
>> }
>> else {
>> C[i,j] = A[i,j]
>> }
>> }
>> }
>> return(C)
>> }
>>
>> mata mosave mysubsi(), dir(c:\ado\personal\m) replace
>> end
>>
>> /// end of pgm
>>
>> then I try to call the function, writing:
>> mata: mysubsi("A", "`touse'")
>> mata: mysubsi("entering the real matrix function which I want to
>> perform change upon", thresh number)
>>
>> I'm surely missing on something and any help would be greatly
>> appreciated.
>>
>> sincerely yours,
>>
>> Marwan
>
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
>
--
To every ω-consistent recursive class κ of formulae there correspond
recursive class signs r, such that neither v Gen r nor Neg(v Gen r)
belongs to Flg(κ) (where v is the free variable of r).
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/