22. 配列


配列とは行列を多次元に拡張したものである.行列は 2 次元であったが,配列はその次元に応じて 3 次元,4 次元,… のものを作成することが出来る.

配列の作成

配列は以下の手順で作成出来る.

  1. 配列の要素をベクトルなどで用意する
  2. 関数 array(ベクトル, 配列の次元数) でベクトルから配列に変換する

すなわち,配列は関数 array() で作成出来,引数 dim に各次元の要素の個数をベクトルを指定する.また,k 次元の配列は k 個の要素番号でアクセス出来,関数 dim() で配列の次元を調べることが出来る.

 
 ( x <- array(1:8, dim=c(1, 4, 2)) )    # 3 次元配列

, , 1
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4

, , 2
     [,1] [,2] [,3] [,4]
[1,]    5    6    7    8

 x[1, 4, ]                              # x[1次元目の番号,2次元目の番号,] でアクセス

[1] 4 8

配列要素へのアクセス

配列の要素へのアクセス方法は行列の場合とほぼ同様である.次元ごとに関数を適用する場合も,行列の操作方法 が使用できる.

例えば,3 次元配列 x に対して,全ての配列番号 i について mean(x[i,i, ]) を計算するには以下の様にすればよい.

 
 x <- array(1:16, dim=c(2, 4, 2))
 apply(x, c(1,2), mean) 

     [,1] [,2] [,3] [,4]
[1,]    5    7    9   11
[2,]    6    8   10   12

配列を転置する場合は関数 aperm() を用いればよい.引数 perm (置換) の部分に c(2,1) を入れれば行列の置換と同じになる.例えば以下の様にして使えばよい.

 
 x  <- array(1:24, 2:4)          # 4 次元配列
 xt <- aperm(x, perm=c(2,1,3))   # xt は x を転置した配列