Sorry, I realize the conditional operator will not help as it only takes a scalar as condition. Then, one can probably do the switch 'manually' with something like
z = (y:>=x) :* (y:-x) + (1:-(y:>=x)) :* (x:-y)
Philippe
> -----Original Message-----
> From: [email protected] [mailto:owner-
> [email protected]] On Behalf Of philippe van kerm
> Sent: Tuesday, May 12, 2009 1:29 PM
> To: [email protected]
> Subject: st: RE: ifelse mata function
>
> See under 'conditional operator':
>
> help m2_op_conditional
> (http://www.stata.com/help.cgi?m2_op_conditional)
>
> Philippe
>
>
> > -----Original Message-----
> > From: [email protected] [mailto:owner-
> > [email protected]] On Behalf Of Nicola Orsini
> > Sent: Tuesday, May 12, 2009 1:21 PM
> > To: [email protected]
> > Subject: st: ifelse mata function
> >
> > Mata users,
> >
> > do you know any mata function similar to ifelse implemented in R or
> > the cond() programming function in Stata?
> >
> >
> http://www.iiap.res.in/astrostat/School07/R/library/base/html/ifelse.ht
> > ml
> >
> > I know I can loop across observations but it's not really fast with
> > large dataset in an optimization process where this process has to be
> > repeated many times.
> >
> > Here is a simple example
> >
> > mata
> > mata clear
> > y = runiform(10,1)
> > x = runiform(10,1)
> > z = J(10,1,.)
> > for (i=1; i<=rows(y); i++) {
> > if (y[i]>= x[i]) z[i] = y[i]-x[i]
> > else z[i] = x[i]-y[i]
> > }
> > y, x, z
> > end
> >
> > Wouldn't be great to have a mata function like -ifelse-?
> >
> > ifelse(y>=x, z=y-x, z=x-y)
> >
> > Nicola
> >
> >
> >
> > *
> > * 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/
>
> *
> * 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/
*
* 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/