[Rd] rbind() on zero row matrices is inconsistent
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Wed Jun 26 15:30:37 CEST 2024
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
More information about the R-devel
mailing list