有没有办法命名列名或行名?
Is there a way to name column names or rownames?
, , RE
Midterm Final mean
A 81.9 75.1 78.5
B 78.3 69.2 73.8
C 79.6 74.4 77.0
mean 79.9 72.9 76.4
我正在尝试命名行和列,以便“主题”位于“A、B、C 和平均值”行上方,而“考试”位于列上方。我还希望 header 是“Initial = RE”而不仅仅是“RE”。
要构造一个名为 dimnames
的数组,将一个命名列表作为 dimnames
参数传递给 matrix
或 array
:
x <- array(seq_len(18L), dim = c(3L, 3L, 2L),
dimnames = list(D1 = letters[1:3], D2 = letters[4:6], D3 = letters[7:8]))
x
## , , D3 = g
##
## D2
## D1 d e f
## a 1 4 7
## b 2 5 8
## c 3 6 9
##
## , , D3 = h
##
## D2
## D1 d e f
## a 10 13 16
## b 11 14 17
## c 12 15 18
要修改现有数组以使其命名为 dimnames
,请设置 dimnames
属性的 names
属性:
y <- array(seq_len(18L), dim = c(3L, 3L, 2L),
dimnames = list(letters[1:3], letters[4:6], letters[7:8]))
names(dimnames(y)) <- c("D1", "D2", "D3")
identical(x, y)
## [1] TRUE
但是,请注意,如果 dimnames(y)
是 NULL
,names(dimnames(y)) <- value
将不起作用:
z <- array(seq_len(18L), dim = c(3L, 3L, 2L))
names(dimnames(z)) <- c("D1", "D2", "D3")
## Error in names(dimnames(z)) <- c("D1", "D2", "D3") :
## attempt to set an attribute on NULL
在上述情况下,要获得命名但“空”dimnames
,您必须执行类似
的操作
dimnames(z) <- list(D1 = NULL, D2 = NULL, D3 = NULL)
或等同于
dimnames(z) <- setNames(vector("list", 3L), c("D1", "D2", "D3"))
现在:
z
## , , 1
##
## D2
## D1 [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## D2
## D1 [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
有趣的是,我们在 print
输出中没有看到 D3 = 1
和 D3 = 2
。 可能是一个错误 - 我得问问楼上的人。
, , RE
Midterm Final mean
A 81.9 75.1 78.5
B 78.3 69.2 73.8
C 79.6 74.4 77.0
mean 79.9 72.9 76.4
我正在尝试命名行和列,以便“主题”位于“A、B、C 和平均值”行上方,而“考试”位于列上方。我还希望 header 是“Initial = RE”而不仅仅是“RE”。
要构造一个名为 dimnames
的数组,将一个命名列表作为 dimnames
参数传递给 matrix
或 array
:
x <- array(seq_len(18L), dim = c(3L, 3L, 2L),
dimnames = list(D1 = letters[1:3], D2 = letters[4:6], D3 = letters[7:8]))
x
## , , D3 = g
##
## D2
## D1 d e f
## a 1 4 7
## b 2 5 8
## c 3 6 9
##
## , , D3 = h
##
## D2
## D1 d e f
## a 10 13 16
## b 11 14 17
## c 12 15 18
要修改现有数组以使其命名为 dimnames
,请设置 dimnames
属性的 names
属性:
y <- array(seq_len(18L), dim = c(3L, 3L, 2L),
dimnames = list(letters[1:3], letters[4:6], letters[7:8]))
names(dimnames(y)) <- c("D1", "D2", "D3")
identical(x, y)
## [1] TRUE
但是,请注意,如果 dimnames(y)
是 NULL
,names(dimnames(y)) <- value
将不起作用:
z <- array(seq_len(18L), dim = c(3L, 3L, 2L))
names(dimnames(z)) <- c("D1", "D2", "D3")
## Error in names(dimnames(z)) <- c("D1", "D2", "D3") :
## attempt to set an attribute on NULL
在上述情况下,要获得命名但“空”dimnames
,您必须执行类似
dimnames(z) <- list(D1 = NULL, D2 = NULL, D3 = NULL)
或等同于
dimnames(z) <- setNames(vector("list", 3L), c("D1", "D2", "D3"))
现在:
z
## , , 1
##
## D2
## D1 [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## D2
## D1 [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
有趣的是,我们在 print
输出中没有看到 D3 = 1
和 D3 = 2
。 可能是一个错误 - 我得问问楼上的人。