統計解析フリーソフト「R」で統計学に入門する28 【配列(アレイarray)を使ってみる】

こんにちは、ミントです

前回は、Rで行列の計算をやりました

行列の前にやったベクトルは、その要素が行または列番号として指定される「 1次元 」のデータ構造でした

行列は、その要素が行と列番号で指定される「 2次元 」のデータ構造でした

1次元(ベクトル) → 2次元(行列)

とくると、今度は3次元かな?って思いますよね

そのとおりです!

今回は、3次元以上のデータも表現できる「 配列(アレイ array 」をやりたいと思います

3次元以上のデータ扱えるということで、配列は、1次元、2次元も扱えます

本記事の概要

Rで配列(アレイ array)をつくってみる

Rで配列をつくるには、「 array ( ) 関数 」を使います

array ( 配列に入れたいデータ,  データの次元) という形で指定します

 

1次元の配列をつくってみる

Rで配列アレイの生成

1から12の整数値を、arr1 というオブジェクトに代入しています

このとき、dim = c(12) として、1次元を指定しています

ん?12と指定したから、12次元じゃないの?

って思うかもしれませんが、そうではないんです

dim = c(12) では、dim の要素数が次元に対応します

c(12)は、つまり12という数値が1つなので、1次元なのです

1次元で、1つの次元に12個データが入りますよ~という意味になります

この点は、1次元ではわかりにくいので、2次元をみてみましょう

 

2次元の配列をつくってみる

Rで配列アレイを作成する

こんどは、次元 dim = c ( 2, 6 ) と指定しました

すると、ピンク色の結果を見ると、2行6列の行列(2次元)データとして代入されていることがわかります

1次元のところで書いたように、dim = c ( 2,  6 ) は2つの数値2,6をもっています。この配列は2次元で、それぞれの次元には、2個、6個の数値をもつことができる、という意味になっています

次元の感覚はつかめましたでしょうか?

ほかの例をもあげてみますので、感覚をつかんでくださいね

Rで配列アレイを生成

こちらも2次元で、それぞれの次元に3個と4個のデータをもつように指定しました

結果は、3行4列の行列になっていますね

つぎの例では6行2列の行列をつくっています

Rで配列アレイを生成

いかがでしょうか?これで2次元の配列はつかめたんではないでしょうか

3次元の配列をつくる

3次元配列は、次元dim に3つの数値を指定すれば作れます

Rで配列アレイを生成

次元を dim = c ( 2, 2, 3 ) と3個の数値を指定したので、3次元となり、それぞれの次元に、2個、2個、3個のデータを含んでいます

ピンク色の結果表示をみると、2行2列の行列が3個できていることがわかります

ほかの例も示しておきますね

Rで配列アレイを生成する

1行4列の行列が3個ある配列ができました。要素数4のベクトルが3つできた、とみることもできますね

Rで配列アレイを生成

この例では、2行3列の行列が2つできています

3次元配列の感覚もつかめてきたのではないでしょうか

 

ここでちょっと疑問をもった方もおられるのではないでしょうか

上の例では、データ数が12個で、各次元のデータの個数が12個をうまく格納できる個数になってます

  • 12 = 2 × 2 × 3
  • 12 = 1 × 4 × 3
  • 12 = 2 × 3 × 2

という感じになってます

じゃあたとえば、 次元を 2 × 5 × 2 = 20 のように、全データ数の12個に合わないように指定したらどうなるでしょうか?

データの個数と次元の指定の関係

Rで配列アレイを生成

配列に入れたかった12個の数値は、2番目の行列の1列目までにすべて含まれています

そのあと、2番目の行列の2列目からは、また1,2,3・・・と12個のデータが最初から繰り返して代入されています!

本来指定した1から12の整数だけでなく、再び1から配列の要素がうまるまで、繰り返して使われています。そして特にエラーの表示などはありません

つまり、Rで配列を生成させるときは、データ数と次元に注意!気づかないまま使っていると、その後の計算で思わぬエラーを起こしてしまうかもしれないからです

じつは以前ベクトルでも同じ現象がありました

Rは、足りない値を自動的に満たしてくれるので、親切と言えるかもしれませんが、間違ったまま気づかないで計算を進めてしまうリスクもあります

このことは頭の片隅においておくといいかなぁと思います

 

というわけは、今回「 配列 」は、ベクトルや行列を含んだデータ構造であることが分かりました

Rにおいては、データは基本的に「 1次元のベクトル 」で表現されています。それに「 次元 」という指定をつけることで、2次元の行列だったり3次元以上の配列などを作ることができるわけです

そのときには、データ数と各次元の要素数に気をつけましょうね!ということもやりました

というわけで、今回はRで配列(アレイ)を作ってみました

 

 

Rには、「データフレーム」というデータ構造があります↓

こちら無料で読めます↓