Note that c}b,:a
does indeed compute b,:a. But if it's used in the precise form result =: c}b,:a the computation is avoided. b =: 1e6$4 a =: 1e6$4 c=: ? 1e6$ 2 ts 'c}b,:a' 0.0401299 2.09725e7 ts 'q =: c}b,:a' 0.0112949 4.19558e6 There are other special cases; see the Special Code page. Henry Rich On 12/21/2011 11:43 AM, Marshall Lochbaum wrote: > A more obvious way is to use (c { b,.a) . The key is to realize that saying > (if c then a else b) is just selection: if c is 0, we pick b, and if c is > 1, we pick a. So we rephrase as (c { b,a), and J's implicit rank allows us > to do (c { b,.a) for vector c, a, and b. > > That said, (c} b,:a) is faster, and uses less memory by not actually > computing b,:a . So it's a better choice. > > Marshall > > On Wed, Dec 21, 2011 at 10:26 AM, Brian Schott<schott.br...@gmail.com>wrote: > >> One way is the following. >> >> c}b,:a >> 10 2 30 >> >> >> -- >> (B=) >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm