很容易更改行的名称(例如,使用rownames()
),但这不是我所追求的。考虑一下:
> newTab <- xtabs(~as.factor(letters[1:2])+LETTERS[1:2])
> newTab
LETTERS[1:2]
as.factor(letters[1:2]) A B
a 1 0
b 0 1
我想得到这个:
upper case
lower case A B
a 1 0
b 0 1
但如果我尝试:
> dimnames(newTab) <- list("lower case", "upper case")
我收到错误:
dimnames(newTab)&lt; - list(“小写”,“大写”)中的错误:
'dimnames'[1]的长度不等于数组范围
答案 0 :(得分:12)
查看str(newTab)
的输出:
> str(newTab)
xtabs [1:2, 1:2] 1 0 0 1
- attr(*, "dimnames")=List of 2
..$ as.factor(letters[1:2]): chr [1:2] "a" "b"
..$ LETTERS[1:2] : chr [1:2] "A" "B"
- attr(*, "class")= chr [1:2] "xtabs" "table"
- attr(*, "call")= language xtabs(formula = ~as.factor(letters[1:2]) + LETTERS[1:2])
as.factor(letters[1:2])
和LETTERS[1:2]
是dimnames
列表的名称。所以你真的想设置dimnames
列表的名称,而不是自己的dimnames。你可以通过以下方式做到这一点:
> dimnames(newTab) <- setNames(dimnames(newTab),c("lower case", "upper case"))
> # or
> names(dimnames(newTab)) <- c("lower case", "upper case")
> newTab
upper case
lower case A B
a 1 0
b 0 1