矩阵的DIMR名称,奇怪的行为

矩阵的DIMR名称,奇怪的行为,r,R,这是R中的错误还是有意义 ## works aa <- matrix(nrow=1,ncol=2) dimnames(aa)[[2]] <- c("a","b") dimnames(aa)[[1]] <- c("c") ## does not work bb <- matrix(nrow=1,ncol=2) dimnames(bb)[[1]] <- c("c") Error in dimnames(bb)[[1]] <- c("c") : 'dimnames

这是R中的错误还是有意义

## works
aa <- matrix(nrow=1,ncol=2)
dimnames(aa)[[2]] <- c("a","b")
dimnames(aa)[[1]] <- c("c")

## does not work
bb <- matrix(nrow=1,ncol=2)
dimnames(bb)[[1]] <- c("c")
Error in dimnames(bb)[[1]] <- c("c") : 'dimnames' must be a list
###有效
aa你可以使用

dimnames(bb)[[1]] <- list("c")

dimnames(bb)[[1]]我会按照错误所说的做:

dimnames(bb)[[1]] <- list("c")
> bb
  [,1] [,2]
c   NA   NA
dimnames(bb)[[1]]bb
[,1] [,2]
c钠钠
同样有效的是:

dimnames(bb)[[1]] <- "c"

dimnames(bb)[[1]]这是预期的行为。当您指定给对象元素的索引时,如果元素不存在,R将创建该元素。在您的示例中,
aa
中不存在“dimnames”,因此R尝试根据您分配给它的内容创建“dimnames”。考虑分配一个列表名为“A”、“B”和“C”的元素:

> L <- list()
> L$a[[1]] <- 5
> L$b[[3]] <- "foo"
> L$c[[4]] <- c(1,2,3)
> class(L$a)
[1] "numeric"
> class(L$b)
[1] "character"
> class(L$c)
[1] "list"
>L$a[[1]]L$b[[3]]L$c[[4]]类(L$a)
[1] “数字”
>级别(L$b)
[1] “角色”
>等级(L$c)
[1] “列表”

现在说
L$a[[1]]的问题是,我真的很惊讶它能起作用<代码>aa$b[[1]]@拥挤我同意,使用单括号更为一致。但是实际上,
dimnames(aa)[1]