raoul schorer wrote:
>
>
> NB. Column index of data y by name x
> colIdxByName =: 4 : 'I. (0 { y) = <x'
>
> NB. Select a column in data y by index x
> colByIdx =: 4 : '}.x{|:y'
>
> But if I try:
>
> colByName =: 4 : 0
> idx =. x colIdxByName y
> res =. idx colByIdx y
> )
Your approach is very sound but has some hideous inside detail wrong.
You just need some advice how to debug things at this point.
> 'Valeur' colByName data NB. nothing happens...
Every expression either yields a very visible error message or returns
*something*. Have a look at at its shape:
$ 'Valeur' colByName data
You'll find that you got a matrix with 0 rows but some columns here.
> idx =: 'Valeur' colIdxByName data
> idx colByIdx data NB. this doesn't work
>
> 2 colByIdx data NB. but this does...
Then there must be some difference between idx and 2 even though
not immediately obvious. Again,
$ idx
will tell you that you have not your expected scalar 2 here but a
singleton vector.
You'll be certainly able to further track the down, where in your
colByName utility this singleton-instead-of-scalar originates.
Then you can fix that.
Martin
Some extra remarks:
- idx -: 2
- datatype idx NB. when strings disguise as numbers
- most J'ers would have build colIdxByName upon i. instead of I.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm