Bookmark and Share

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 equivalent for R's which() or matlabs find() functions?


From   [email protected] (William Gould, StataCorp LP)
To   [email protected]
Subject   Re: st: Mata equivalent for R's which() or matlabs find() functions?
Date   Tue, 01 Mar 2011 14:34:54 -0600

Sebastian Eppner <[email protected]> writes, 

> I am desperately looking for a mata function that gives me the column
> indices of columns that satisfy certain conditions.

Just to fix ideas, let's say we have 

      x = (2, 4, 1, 6) 

and we want to obtain the column indices for which x is even.  We 
want (1, 2, 4).  The answer is:

        : s = (floor(x:/2)*2 :== x)

        : result = select((1..4), s)

        : result
               1   2   3
            +-------------+
          1 |  1   2   4  |
            +-------------+

In the above, s is the selection vector; the vector contains 0 for 
columns that should be omitted, and nonzero for columns to be included.
I set up s to contain 1s and 0s, with 1s marking the even numbers.

(1..4) creates the vector (1, 2, 3, 4).  

(1..6) would create (1, 2, 3, 4, 5, 6)

Thus, (1..cols(s)), which Mata will understand, creates a vector of 
indices.

The select() function selects columns (or rows) from one matrix based on 
a selection vector.

-- Bill
[email protected]
*
*   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index