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

Reply via email to