在R中命名现有数组的维度

时间:2013-03-31 01:38:15

标签: r multidimensional-array naming

我有一个现有的数组,我想命名这个数组的维度。我不能使用dimnames=的{​​{1}}参数,因为我需要使用不同的函数来创建此数组。我需要使用与此array()类似的内容重命名维度。

感谢您的帮助(如果您还不知道,我是新手)

2 个答案:

答案 0 :(得分:4)

使用dimnames(x) <- list(d1names, d2names, ...) d1namesd2names等字符向量,其长度与尺寸的长度相匹配。

如果您的数组是二维的(矩阵),则可以改为使用rownames(x) <- d1namescolnames(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

答案 1 :(得分:0)

你仍然可以使用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