R言語で配列を使います。配列もベクトルと同じく入れ物なのですが、次元数が自由に設定できます。
配列はarray関数で作ります。
> a = array(dim=c(2,6)) > a [,1] [,2] [,3] [,4] [,5] [,6] [1,] NA NA NA NA NA NA [2,] NA NA NA NA NA NA >
値を指定していないので、配列の中は空です。
初期値ありで配列を作るには、ベクトルで値を指定すればよいです。
> a = array(1:12,c(3,4)) > a [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 >
初期値が配列数よりも少ない場合は、繰り返しパターンで初期化されます。
> a = array(c(1,5,10),c(5,5)) > a [,1] [,2] [,3] [,4] [,5] [1,] 1 10 5 1 10 [2,] 5 1 10 5 1 [3,] 10 5 1 10 5 [4,] 1 10 5 1 10 [5,] 5 1 10 5 1 >
3次元配列。
> a = array(0,c(2,3,4)) > a , , 1 [,1] [,2] [,3] [1,] 0 0 0 [2,] 0 0 0 , , 2 [,1] [,2] [,3] [1,] 0 0 0 [2,] 0 0 0 , , 3 [,1] [,2] [,3] [1,] 0 0 0 [2,] 0 0 0 , , 4 [,1] [,2] [,3] [1,] 0 0 0 [2,] 0 0 0 >
次元を指定しないと、一次元配列になります。
> a=array(1:10) > a [1] 1 2 3 4 5 6 7 8 9 10 >
一見ベクトルのように見えますが、これは一次元配列です。
is.vector、is.arrayで確認してみましょう。
> is.vector(a) [1] FALSE > is.array(a) [1] TRUE >
配列からベクトルを抽出できます。
> b = a[1:10] > b [1] 1 2 3 4 5 6 7 8 9 10 > is.vector(b) [1] FALSE > is.array(b) [1] TRUE >
配列の変換をするには、いったんベクトルに戻してから配列を作り直せばよいみたいです。
> a = array(1:12,c(3,4)) > a [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 > b = array(a[1:12],c(2,2,3)) > b , , 1 [,1] [,2] [1,] 1 3 [2,] 2 4 , , 2 [,1] [,2] [1,] 5 7 [2,] 6 8 , , 3 [,1] [,2] [1,] 9 11 [2,] 10 12 >
コメント