[Rd] array() ignores illegal non-list dimnames

Martin Maechler maechler at stat.math.ethz.ch
Sat Dec 19 12:24:56 CET 2015


>>>>> William Dunlap via R-devel <r-devel at r-project.org>
>>>>>     on Thu, 17 Dec 2015 14:40:18 -0800 writes:

    > Is there a reason that array() silently ignores dimnames
    > that are not a list but matrix() gives an error?

    >> str(matrix(11:14, 2, 2, dimnames=c("Rows","Cols")))
    > Error in matrix(11:14, 2, 2, dimnames = c("Rows", "Cols")) :
    > 'dimnames' must be a list

    >> str(array(11:14, dim=c(2, 2), dimnames=c("Rows","Cols")))
    > int [1:2, 1:2] 11 12 13 14

of course there must be a historical reason why this lapsus
happens, ;-)

but it is definitely not as intended, and I'll commit a fix for
R-devel and R-patched  "immediately".

    > I noticed this in lhs:::geneticLHS, which has the line
    > J <- array(NA, dim = c(n, k, pop), dimnames = c("points",
    > "variables", "hypercubes"))
    > where the non-list dimnames has no effect, and no warning or error.

so we will see some CRAN (and may off-CRAN) packages
producing errors after the change,
but indeed, these errors will be catching programming errors !

    > Bill Dunlap
    > TIBCO Software
    > wdunlap tibco.com

Thanks a lot, Bill!
Martin



More information about the R-devel mailing list