12. ベクトルの作成


ベクトルとは

R では実数,複素数,文字列,論理数などの基本的データを一つずつ単独で扱う代わりに,同じ型のデータをいくつかまとめたベクトルと呼ばれる形で取り扱っている.よって,今までの例では数値や文字列を一つずつ単独で扱っているかのように説明してきたが,実際には R はこれらの基本的データを,要素の個数が一つだけのベクトルとして扱っていたわけである.例えば,以下の計算は要素がひとつのベクトル同士の足し算を行っていることになる.

 
 1 + 2

[1] 3  

1 + 2 だから単に 3 と返せばよいだけのはずだが,よく見ると [1] が前についている.小難しく云えば 1×1 のベクトル (1) と 1×1 のベクトル (2) の足し算を行って,結果として 1×1 のベクトル (3) が返ってきたことになる.[1] は『ベクトルの一つめの要素』という意味である.

ベクトルの作成

ベクトルを作成する基本的な関数は c() である.

 
 c(1.0, 2.0, 3.0, 4.0, 5.0)               # 長さ 5 のベクトルを作成する

[1] 1 2 3 4 5

通常,R では整数と実数を特に区別しない.厳密に型を整数に設定したい場合は関数 as.integer() で変換すればよい.

ベクトルを変数に代入する場合も <- を用いる.ちなみに,c() という名前の関数があるからといって,オブジェクト名に c を使うことが出来ないというわけではない.よって,以下のようなことも出来る.

 
 ( c <- c(1.0, 2.0, 3.0, 4.0, 5.0) )      # c という名のオブジェクトにベクトルを代入

[1] 1 2 3 4 5

ベクトルの長さ

ベクトルの要素の個数をベクトルの長さと呼び,ベクトルの長さは関数 length() で調べる.

 
 length(x)                                # 要素が 5 個あるベクトルの長さを調べる

[1] 5

規則性のあるベクトルの作成

関数 c() 以外に規則的なベクトルを生成する関数が多数用意されている.まずは例を示す.

 
 1:5                                 # 1 から  5 まで 1 づつ増加するベクトルを作る

[1]  1  2  3  4  5

 3:-3                                # 3 から -3 まで 1 づつ減少するベクトルを作る

[1] 3 2 1 0 -1 -2 -3

 rep(1:3, length=8)                  # 数列 (1 2 3) を長さ 8 になるまで反復生成

[1] 1 2 3 1 2 3 1 2 

 seq(1, 10, length=5)                # 1 から 10 までを等分割した長さ 5 のベクトルを作る

[1] 1.00 3.25 5.50 7.75 10.00

 seq(along=c(2,8,5))                 # 1:length(c(2,8,5)) と同じ

[1] 1 2 3

以下に規則的なベクトルを生成する関数の一覧を挙げる.

コマンド

機能

a:b

a から b (a < b) までの交差が 1 の数列を生成する.a > b ならば交差が -1 の数列を生成する.

seq(a, b, length = n)

a, b 間を n 等分する等差数列を生成.

seq(a, b, by = c)

a から b まで c づつ増加するベクトルを生成.

sequence(c(3,2))

パターンを持つベクトルを生成する.この場合は (1 2 3 1 2) .

rep(a:b, times = c)

a から b まで 1 づつ増加する数列を c 個生成.c は数列でも可.

rep(a:b, length = c)

a から b まで 1 づつ増加する数列を,長さ c になるまで反復して生成.

unique(x)

ベクトル x 中の反復した値を除いたベクトルを返す.

numeric(n)

0 を n 個並べたベクトルを生成.