Full_Name: Ben Goodrich Version: 2.9.0 OS: Linux (Debian unstable) Submission from: (NULL) (128.103.220.16)
row(x), col(x), and functions that call them like lower.tri(x) and upper.tri(x) do not retain the rownames or colnames of x in the matrix that is returned. Example from R version 2.9.0 : x <- matrix(1:9, nrow = 3, ncol = 3) rownames(x) <- LETTERS[1:3] colnames(x) <- letters[1:3] dimnames(row(x)) # NULL dimnames(col(x)) # NULL Is there anyone for whom the expected behavior is to drop the dimnames of x ? It is not consistent with other functions of matrices. By default, row(x) already returns the row numbers of x (and similarly for col()), so how would seeing integers in the rownames be helpful? Without patch: > row(x) [,1] [,2] [,3] [1,] 1 1 1 [2,] 2 2 2 [3,] 3 3 3 With patch: > row(x) a b c A 1 1 1 B 2 2 2 C 3 3 3 Patch: Index: src/library/base/R/matrix.R =================================================================== --- src/library/base/R/matrix.R (revision 48553) +++ src/library/base/R/matrix.R (working copy) @@ -104,8 +104,9 @@ labs <- rownames(x, do.NULL=FALSE, prefix="") res <- factor(.Internal(row(dim(x))), labels=labs) dim(res) <- dim(x) - res - } else .Internal(row(dim(x))) + } else res <- .Internal(row(dim(x))) + dimnames(res) <- dimnames(x) + res } col <- function(x, as.factor=FALSE) @@ -114,8 +115,9 @@ labs <- colnames(x, do.NULL=FALSE, prefix="") res <- factor(.Internal(col(dim(x))), labels=labs) dim(res) <- dim(x) - res - } else .Internal(col(dim(x))) + } else res <- .Internal(col(dim(x))) + dimnames(res) <- dimnames(x) + res } crossprod <- function(x, y=NULL) .Internal(crossprod(x,y)) ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel