Statalist The Stata Listserver


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: mata function : coding optional argument


From   wgould@stata.com (William Gould, Stata)
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: mata function : coding optional argument
Date   Tue, 18 Apr 2006 08:10:20 -0500

AbdelRahmen El Lahga <uaquap@gnet.tn> writes, 

> I'm writing a mata function say: 
>
>       transmorphic matrix chak(real colvector dim1, 
>                                real colvector dim2, 
>                                | real colvector pop , real scalar b)
>       {......}
>
>
> in which "pop" and the scalar "b" are optional arguments as
> you can see above
>
> My question is how to code the optional arguments. I want that
> if user dont specifies  the vector "pop"  mata must replace it
> by a vector of ones  and similary for b.
> Following the help my solution was
>
>       nb_arg=args()
>       if (nb_arg<3) pop=J(rows(dim1),1,1)
>       if (nb_arg<4) b=1
>
> but this solution don't allow  the user to specifies the
> scalar b and omit the 3rd argument pop

What AbdelRahmen has coded is exactly right, and Abdel is also right 
that user can omit the third and fourth arguments, or the fourth, but 
not just the third.  Mata's arguments are positional, and positional 
means that if you specify 3 argments, they are the first, second, and 
third, not the first, second, and fourth.

-- Bill
wgould@stata.com
*
*   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/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index