Sure, was only written to deal with typical input of 1 row rank 0, 1, 2 arrays.
You are right about general case, thanks Raul. > On 3 Oct 2015, at 11:49 am, Raul Miller <[email protected]> wrote: > > Er... > > mat=:((_2{. 1 1,$) $ ]) > $mat i.5 2 > 5 2 2 > > ... maybe not quite that, at least not for this case? > > Thanks, > > -- > Raul > > On Fri, Oct 2, 2015 at 9:48 PM, Rob Hodgkinson <[email protected]> wrote: >> Further to Bill’s point Nollaig, your approach using rank fails for a rank 0 >> item … >> >> $ ,:`]@.(<:@$^:2 fee) fee=:'ab' >> 1 2 >> $ ,:`]@.(<:@$^:2 fee) fee=:,'a' >> 1 1 >> $ ,:`]@.(<:@$^:2 fee) fee=:'a' >> >> >> For this solution maybe better to just use $ rather than ,: as shown (easier >> to follow and efficient): >> $(_2{. 1 1,$ fee)$fee=:'ab' >> 1 2 >> >> so … >> mat=:((_2{. 1 1,$) $ ]) NB: Note in the left tine of the fork (_2{. 1 >> 1,$) the argument is supplied by definition of the fork >> $mat 'ab' >> 1 2 >> $mat ,'a' >> 1 1 >> $mat 'a' >> 1 1 >> >> Rob >> >>> On 3 Oct 2015, at 11:28 am, bill lam <[email protected]> wrote: >>> >>> $$ looks like a scalar but is a rank 1 array. use #$ instead. >>> ,:`]@.(<:@#@$) fee=:'ab' >>> >>> the verb >>> ,:`]@.(<:@$^:2 fee) is reduced to ] and then run as ] fee >>> On Oct 3, 2015 8:27 AM, "Nollaig MacKenzie" <[email protected]> >>> wrote: >>> >>>> >>>> >>>> I have a variable, fee, which might have shape >>>> N,2 or just 2. I want a function that converts >>>> fee when it has shape 2 to shape 1 2. >>>> >>>> It seems straightforward: if the rank is 2, >>>> make no change, if 1, apply ,: >>>> >>>> So something like ,:`]@.(<:@$^:2) should >>>> do the trick. Indeed, this works: >>>> >>>> $ ,:`]@.(<:@$^:2 fee) fee=:'ab' >>>> 1 3 >>>> >>>> But when I try to define something to do >>>> what I want, I get lost. >>>> >>>> ,:`]@.(<:@$^:2) fee=:'ab' >>>> |rank error >>>> | ,:`]@.(<:@$^:2)fee=:'ab' >>>> ,:`]@.(<:@$^:2 ]) fee=:'ab' >>>> |domain error >>>> | ,:`]@.(<:@$^:2]) fee=:'ab' >>>> ,:`]@.((<:@$^:2)@: ]) fee=:'ab' >>>> |rank error >>>> | ,:`]@.((<:@$^:2)@:]) fee=:'ab' >>>> >>>> >>>> >>>> (I'll spare you more) >>>> >>>> I must be missing something obvious. >>>> >>>> -- >>>> Nollaig MacKenzie >>>> http://www.yorku.ca/nollaig >>>> ---------------------------------------------------------------------- >>>> 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
