surprised matrix (1:256, 8, 8) doesn't cause error/warning
So, does that mean that a clean result is contingent on the length of the data being a multiple of both the number of rows and columns? However, this rule is not straightforward.
#EXAMPLE 1 #what I would expect matrix (1:12, 0, 0)
<0 x 0 matrix> Warning message: In matrix(1:12, 0, 0) : data length exceeds size of matrix
#EXAMPLE 2 #don't like this matrix (numeric (), 2, 3)
[,1] [,2] [,3] [1,] NA NA NA [2,] NA NA NA The first example is what I would expect, but is inconsistent with the previous examples. (Because zero is a valid multiple of twelve). I dislike the second example with recycling of a zero-length vector. This *is* covered in the help file, but also seems inconsistent with the previous examples. (Because two and three are not valid multiples of zero). Also, I can't think of any reason why someone would want to construct a matrix with extra data, and then discard part of it. And even if there was, then why not allow an arbitrarily longer length? On Mon, Feb 1, 2021 at 10:08 PM Martin Maechler
<maechler at stat.math.ethz.ch> wrote:
Abby Spurdle (/??bi/)
on Mon, 1 Feb 2021 19:50:32 +1300 writes:
> I'm a little surprised that the following doesn't trigger an error or a warning.
> matrix (1:256, 8, 8)
> The help file says that the main argument is recycled, if it's too short.
> But doesn't say what happens if it's too long.
It's somewhat subtler than one may assume :
matrix(1:9, 2,3)
[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 Warning message: In matrix(1:9, 2, 3) : data length [9] is not a sub-multiple or multiple of the number of rows [2]
matrix(1:8, 2,3)
[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 Warning message: In matrix(1:8, 2, 3) : data length [8] is not a sub-multiple or multiple of the number of columns [3]
matrix(1:12, 2,3)
[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
So it looks to me the current behavior is quite on purpose. Are you sure it's not documented at all when reading the docs carefully? (I did *not*, just now).