The bug here comes from code assuming that paste("row", numeric(0), sep="")
is of length 0. See ?paste. Fixed for 2.4.0. On Fri, 11 Aug 2006, [EMAIL PROTECTED] wrote: > [R 2.3.1 on Windows XP] > > Hello, > The 'do.NULL=FALSE' option of 'rownames' and 'colnames' does not > work as documented when the array has a 0-extent dimension: > > tmp <- matrix(1:15, ncol=3, dimnames=list(letters[1:5], LETTERS[1:3])) > rownames(tmp) # Fine > rownames(tmp[0,,drop=FALSE]) # NULL (okay, but see question below) > rownames(tmp[0,,drop=FALSE], do.NULL=FALSE) # "row" > > The last line returns a character vector of length 1, "row", rather > than character(0) as implied by the second paragraph of the details > section of ?rownames: > > "If 'do.NULL' is 'FALSE', a character vector (of length 'NROW(x)' > or 'NCOL(x)') is returned in any case, prepending 'prefix' to > simple numbers, if there are no dimnames or the corresponding > component of the dimnames is 'NULL'." > > ---------- > > A separate but related question (not a bug) has to do with the handling > of dimnames for 0-extent arrays. If an array starts out with non-NULL > dimnames and is subscripted down to have 0-extent, the corresponding > component is set to NULL, rather than character(0): > > dimnames(tmp[0,,drop=FALSE]) # first component is NULL > > Why is that? Note that this is different from how data frames are > handled: > > tmp.df <- data.frame(tmp) > dimnames(tmp.df[0,]) # first component is character(0) > > The description in ?dimnames seems to allow character(0) components > of dimnames, > > "The dimnames of a matrix or array can be 'NULL' or a list of the > same length as 'dim(x)'. If a list, its components are either > 'NULL' or a character vector the length of the appropriate > dimension of 'x'." > > yet the implementation seems to resist them: > > tmp2 <- tmp[0,,drop=FALSE] > dimnames(tmp2) <- list(character(0), LETTERS[1:3]) > dimnames(tmp2) # still NULL > > So my question is whether it would be reasonable to change 'dimnames' > and/or "dimnames<-" to use (or at least allow) character(0) rather than > NULL for array dimensions of 0 extent. > > Rich Raubertas > Merck & Co. > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel