【发布时间】:2013-03-31 01:38:15
【问题描述】:
我有一个现有的数组,我想命名这个数组的维度。我不能使用array() 的dimnames= 参数,因为我需要用不同的函数制作这个数组。我需要用类似于 names(my.array)<-my.names 的名称重命名尺寸。
感谢您的帮助(如果您还不知道,我是新手)
【问题讨论】:
标签: r multidimensional-array naming
我有一个现有的数组,我想命名这个数组的维度。我不能使用array() 的dimnames= 参数,因为我需要用不同的函数制作这个数组。我需要用类似于 names(my.array)<-my.names 的名称重命名尺寸。
感谢您的帮助(如果您还不知道,我是新手)
【问题讨论】:
标签: r multidimensional-array naming
使用dimnames(x) <- list(d1names, d2names, ...),其中d1names、d2names 等是长度与您的维度长度匹配的字符向量。
如果您的数组是二维的(矩阵),您可以改用rownames(x) <- d1names 和colnames(x) <- d2names。
例子:
> A <- outer(outer(1:3,1:4),1:2)
> A
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 4 8 12 16
[3,] 6 12 18 24
> dimnames(A)
NULL
> dimnames(A) <- list(LETTERS[1:3],LETTERS[1:4],LETTERS[1:2])
> A
, , A
A B C D
A 1 2 3 4
B 2 4 6 8
C 3 6 9 12
, , B
A B C D
A 2 4 6 8
B 4 8 12 16
C 6 12 18 24
矩阵示例:
> B <- matrix(1:12,3,4)
> B
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> rownames(B) <- letters[1:3]
> B
[,1] [,2] [,3] [,4]
a 1 4 7 10
b 2 5 8 11
c 3 6 9 12
> colnames(B) <- LETTERS[1:4]
> B
A B C D
a 1 4 7 10
b 2 5 8 11
c 3 6 9 12
【讨论】:
dimnames(A)[[1]] <- xxx 和 dimnames(A)[[3]] <- yyy。
你仍然可以使用dimnames<-
例如:
someArray <- array(1:30, dim=c(2, 3, 5))
dimnames(someArray) <- list(c("Hello", "World"), LETTERS[6:8], letters[1:5])
someArray
# , , a
# F G H
# Hello 1 3 5
# World 2 4 6
# , , b
# F G H
# Hello 7 9 11
# World 8 10 12
# , , c
# F G H
# Hello 13 15 17
# World 14 16 18
# , , d
# F G H
# Hello 19 21 23
# World 20 22 24
# , , e
# F G H
# Hello 25 27 29
# World 26 28 30
【讨论】: