[Rd] surprised matrix (1:256, 8, 8) doesn't cause error/warning
Abby Spurdle (/əˈbi/)
@purd|e@@ @end|ng |rom gm@||@com
Tue Feb 2 00:27:05 CET 2021
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 using 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).
More information about the R-devel
mailing list