This has been a recurring problem.  The best that I have is due to 
Martin Neitzel: (watch line wrap)

NB. u is gerund, v is a verb.  [x] (k{u)`:0 &. v is applied to cell k of y
NB. The first cell is evaluated to get the shape of a result cell, then 
all cells are reevaluated
respectively =: 2 : 0
a: (<@:((,'2')&(,&<))@:((<,']')&,) "0 u) respectively v y
:
z =. (#y) $ ,: x ({.m)`:0&.v {.y
for_y. y do. z =. (x (((#m)|y_index){m)`:0 &.v y) y_index} z end.
)


Henry Rich

Sherlock, Ric wrote:
> Can anybody provide some guidance on the following?
> 
>    fns=: ((-~ +/)"1)`((*~ +/)"1)`((+~ +/)"1)`((%~ +/)"1)
>    rnge=. >: i. 5
>    ]data=. (i.5 3);(i.5 2);(i.5 4);(i.5 3)
> +--------+---+-----------+--------+
> | 0  1  2|0 1| 0  1  2  3| 0  1  2|
> | 3  4  5|2 3| 4  5  6  7| 3  4  5|
> | 6  7  8|4 5| 8  9 10 11| 6  7  8|
> | 9 10 11|6 7|12 13 14 15| 9 10 11|
> |12 13 14|8 9|16 17 18 19|12 13 14|
> +--------+---+-----------+--------+
> 
> Given the gerund "fns" (4 dyadic verbs) and the noun "data" (4 arrays which 
> are the desired arguments for the corresponding verbs in the gerund), how can 
> I apply the verbs to their respective arguments such that:
> 
>    rnge applyVerbs data
> +-------------------+--------------+--------------+--------------+
> | 3  1.5  1 0.75 0.6| 7  8  9 10 11| 1  2  3  4  5| 2  1  0 _1 _2|
> |12    6  4    3 2.4|23 24 25 26 27| 5 10 15 20 25|11 10  9  8  7|
> |21 10.5  7 5.25 4.2|39 40 41 42 43| 9 18 27 36 45|20 19 18 17 16|
> |30   15 10  7.5   6|55 56 57 58 59|13 26 39 52 65|29 28 27 26 25|
> |39 19.5 13 9.75 7.8|71 72 73 74 75|17 34 51 68 85|38 37 36 35 34|
> +-------------------+--------------+--------------+--------------+
> 
> Here is a looping explicit solution, but I feel like should be a 
> simpler/better way?
>    
> applyVerbs=: 3 : 0
>   (>: i. 4) applyVerbs y
> :
>   res=. '' 
>   for_mod. y do.
>     res=. res ;~ x [email protected]_index >mod
>   end.
>   }:res
> )
> 
> For those interested in the actual problem - the verbs are different models 
> that are being compared. Different models have different numbers of inputs 
> (the columns of arrays in data) and the rows of the arrays in data are 
> different suggested input combinations. I'm going to multiplot the result. Eg:
>    require 'plot'
>    pd 'reset'
>    pd 'multi 2 2 , 2 2'
>    pd (<'type line;'),.rnge makeFuncData data
>    pd 'show'
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> 
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to