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
>


コメント