Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: mata conditional operator element-by-element?
From 
 
Nick Cox <[email protected]> 
To 
 
[email protected] 
Subject 
 
Re: st: mata conditional operator element-by-element? 
Date 
 
Sat, 28 Apr 2012 11:10:31 +0100 
Mata does not support ? : for arrays.
Ben Jann offers an -mm_cond()- in his -moremata- (SSC). It won't be
(can't be) more efficient than the most direct way of working around
the limitation above. It might be more convenient.
In my experience work-arounds usually boil down to
<vector or matrix yielding 1s if true> :* <result if true>
:+
<vector or matrix yielding 1s if false> :* <result if false>
Nick
On Fri, Apr 27, 2012 at 7:24 PM, László Sándor <[email protected]> wrote:
> I checked the help for -m2_op_conditional- on up-to-date Stata 12.1 MP
> for mac, and it looks like the conditional operator only works for
> "general conditions", i.e. scalars, not element-by-element in vectors.
> Much of my code did use -st_select-, but I thought some parts could
> still be cleaner and/or more efficient if I could use something like
> the conditional operator for vectors (as Matlab does allow). Please
> let me know if you have good advice how to get from this
>
> (t:/psc:^2 + (-1:*t:+1):/(-1:+psc):^2))
>
> to something like this
>
> (t == 1 ? psc : psc:-1)^2
>
> [Yes, I would immediately see a problem with this syntax a colon
> operator confusing the conditional operator…]
>
*
*   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/