R言語(配列)

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

>

コメント

タイトルとURLをコピーしました