当 dimnames 当前NULL
为 时,是否可以一次重命名矩阵的维度?
例如,这会失败:
mtx <- matrix(1:16,4)
dimnames(mtx)[[2]][1] <- 'col1'
和Error in dimnames(mtx)[[2]][1] <- "col1" : 'dimnames' must be a list
但是,这有效:
mtx <- matrix(1:16,4)
dimnames(mtx)[[1]] <- letters[1:4]
dimnames(mtx)[[2]] <- LETTERS[1:4]
dimnames(mtx)[[2]][1] <- 'col1'
dimnames(mtx)[[2]][2] <- 'col2'
我的目标是单独替换dimnames(mtx)[[2]][1]
等dimnames(mtx)[[2]][2]
......如果这是不可能的,我可以重新编写循环。
谢谢大家,我得到了以下结果——我通过 prepend 传递了名字:
mtxNameSticker <- function(mtx, prepend = NULL, MARGIN=2)
{
if (MARGIN == 1) max <- nrow(mtx) else
max <- ncol(mtx)
if (is.null(prepend)) if (MARGIN == 2) prepend <- 'C' else
prepend <- 'R'
if (length(prepend) == 1) prepend <- paste0(prepend, 1:dim(mtx)[[MARGIN]])
dimnames(mtx)[[MARGIN]] <- seq(from=1, by=1, length.out=dim(mtx)[[MARGIN]])
for (i in 1:max){
dimnames(mtx)[[MARGIN]][i] <- prepend[i]
}
return(mtx)
}