On Sun, Apr 16, 2017 at 2:26 PM, Michael Goodrich <[email protected]> wrote: > Why does J not treat a column of numbers as a N by 1 'matrix' ie a vector > rather than a list?
From my point of view, J does treat a column of numbers as an N by 1 matrix. But perhaps it is better to go over specific examples (like other people have been doing here). $,.1 2 3 2 1 5 1 ($,.1 2 3 2 1) 5 1 $,:1 2 3 2 1 1 5 $(,.1 2 3 2 1) +/ .* ,:1 2 3 2 1 5 5 $(,:1 2 3 2 1) +/ .* ,.1 2 3 2 1 1 1 But the real issue here is readtable defined at http://www.jsoftware.com/help/primer/files.htm readtable =: 3 : 0 d =. 1!:1 y d =. toJ d d =. cutopen d d =. 0 ". each d d =. > d ) Here, as Chris Burke pointed out, each line of the file is converted to numeric form using 0 ". expression, and when a line contains only one number you do not get a list of numbers of shape 1, but instead just get a number. When these results are merged into the final form you get a list instead of a table. (But this list is a vector, from a J point of view... if that seems confusing, bear with me.) The underlying issue that I think you might be asking about is that the mathematical point of view which J was built on was tensor algebra rather than matrix algebra. So, rather than "everything is a matrix" we instead go with "everything is a tensor" (or, in the jargon used by many computer programmers: "everything is an array of arbitrary dimension"). So, going back a bit, when we do something like 0 ". '93' we get a result which is an numeric array with zero dimensions. If you wanted to force readtable to always return a matrix result, you could do something like this: readtable =: 3 : 0 d =. 1!:1 y d =. toJ d d =. cutopen d d =. 0 ". each d d =. , each d d =. > d ) This will force each individual line to be a 1 dimensional array, so when they are assembled into the result you always will get a matrix. (And note that you do not have to worry about the analogous issue for one row files because cutopen always returns a list of boxes.) I hope this helps, -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
