Thanks Henry
This is much simpler but I have this (probably irrational) negative feeling 
about using Do (".). I imagine that Evoke (~) is probably just Do (".) under 
the covers so perhaps I just need to get over it!! Reassurances welcome :-)

The other thing I like about the other solution is that it will give a length 
error if the columns are not equal length. Whether that is desirable is 
obviously problem dependent, but in my case it is a plus. Combining bits I get:

,.&:>/@:(".&.>)@;: 'Var1 Var2 Var3 Var4 Var5'

> From: Henry Rich
> Sent: Thursday, 17 June 2010 12:23
> 
> |:@:(".@>)      ;: 'Var3 Var5 Var4 Var1 Var2'
> 
> Sherlock, Ric wrote:
> > How best to form a matrix from a list of noun names where each noun
> is a list of values that will form a column in the matrix?
> >
> > Below is one solution, are there better ones?
> >
> > Named nouns:
> > 'Var3 Var5 Var4 Var1 Var2' =: 5 7 ?...@$ 60
> >
> > evoke=: 3 : 'y~'
> > toMatrix =: [: ,.&:>/ [: evoke&.> ;:
> >
> >    toMatrix 'Var1 Var2 Var3 Var4 Var5'
> > 16 36  6 31 37
> >  0 46 35 32 40
> > 24  5 59 58 14
> > 24 17 52  0  6
> > 11  8 14 10 38
> > 13 48 39 42 13
> > 23 42 20 11 58
> >
> > ---------------------------------------------------------------------
> -
> > 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

Reply via email to