Re: [Rd] rbind() on zero row matrices is inconsistent

2024-06-26 Thread Kurt Hornik
> Duncan Murdoch writes:

> The help for cbind() and rbind() says
> "For cbind (rbind), vectors of zero length (including NULL) are ignored 
> unless the result would have zero rows (columns), for S compatibility. 
> (Zero-extent matrices do not occur in S3 and are not ignored in R.)"

> This leads to an inconsistency.


>M <- matrix(NA, 0, 0)  # Make a 0x0 matrix
>N <- matrix(NA, 0, 1)  # Make a 0x1 matrix


>dim(rbind(M, NULL, NULL)) # adds 2 rows to M
>#> [1] 2 0
>dim(rbind(N, NULL, NULL)) # leaves N unchanged
>#> [1] 0 1


> You get an extra row on the 0x0 matrix for each NULL value that is bound 
> to it, but the 0xn matrix is unchanged for n > 0.

> Clearly from the help this is intentional, but is it desirable?
> Wouldn't it make more sense for NULL to be ignored by rbind() and
> cbind()?

I would agree :-)

Best
-k

> Duncan Murdoch

> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


[Rd] rbind() on zero row matrices is inconsistent

2024-06-26 Thread Duncan Murdoch

The help for cbind() and rbind() says

"For cbind (rbind), vectors of zero length (including NULL) are ignored 
unless the result would have zero rows (columns), for S compatibility. 
(Zero-extent matrices do not occur in S3 and are not ignored in R.)"


This leads to an inconsistency.


  M <- matrix(NA, 0, 0)  # Make a 0x0 matrix
  N <- matrix(NA, 0, 1)  # Make a 0x1 matrix


  dim(rbind(M, NULL, NULL)) # adds 2 rows to M
  #> [1] 2 0
  dim(rbind(N, NULL, NULL)) # leaves N unchanged
  #> [1] 0 1


You get an extra row on the 0x0 matrix for each NULL value that is bound 
to it, but the 0xn matrix is unchanged for n > 0.


Clearly from the help this is intentional, but is it desirable? 
Wouldn't it make more sense for NULL to be ignored by rbind() and cbind()?


Duncan Murdoch

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel