ベクトルを一言で言うと、複数の値を要素として持つオブジェクトです。プログラミング言語を学んだ方であれば、配列と同じと考えてもらえば分かりやすいかもしれません。
ベクトルをつくってみましょう
> x <- c(10,20,30) # 3つの数値を持つベクトルを作成 > > x[1] #1番目の要素を抽出 [1] 10 > x[2] #2番目の要素を抽出 [1] 20 > x[1:3] #1~3番目の要素を抽出 [1] 10 20 30 > x[c(1,3)] #1と3番目の要素を抽出 [1] 10 30 > x[-c(1,3)] #1と3番目の要素を除いて抽出 [1] 20 >
上記のように、ベクトルは順番を指定して要素を自由に参照することができます。次に、異なるデータ型のオブジェクトを1つのベクトルにまとめるとどうなるか見てみましょう。
> x <- c("a",1i,1,TRUE) # 複数のデータ型を持つベクトル > x [1] "a" "0+1i" "1" "TRUE" > typeof(x) #オブジェクトタイプを確認 [1] "character" > > > x <- c(1i,1,TRUE) # 複数のデータ型を持つベクトル > x [1] 0+1i 1+0i 1+0i > typeof(x) #オブジェクトタイプを確認 [1] "complex" > > > x <- c(1,TRUE) # 複数のデータ型を持つベクトル > x [1] 1 1 > typeof(x) #オブジェクトタイプを確認 [1] "double" > > > x <- c(TRUE) # 複数のデータ型を持つベクトル > x [1] TRUE > typeof(x) #オブジェクトタイプを確認 [1] "logical" >
上記のように、1つのベクトルに異なるデータ型があると強制的に一つのデータ型に変換されます。どのデータ型が優先されるかは、データ型の表現力に依存します。具体的には、下記の表に示す順番に従って優先的に強制変換されます。
順位 | データ型 | 内容 |
1 | character | 文字型 |
2 | complex | 複素数型 |
3 | double | 実数型 |
4 | logical | 論理型 |
ベクトルの要素に名前を付ける
> x <- c(1,2,3) #ベクトルを作成 > x [1] 1 2 3 > > names(x) <- c("A","B","C") #要素に名前を付ける > x A B C 1 2 3 > > x[c("B")] #名前を指定して要素を抽出 B 2 >
ベクトルに1を足すとどうなるか
> x <- 1:5 #1~5の数値を持つベクトルを作成 > x #ベクトルを表示 [1] 1 2 3 4 5 > sum(x) #ベクトルの要素を合計 [1] 15 > > x <- x + 1 #ベクトルに1を足す > x #全ての要素に1が足されていることが分かる [1] 2 3 4 5 6 > sum(x) #ベクトルの要素を合計 [1] 20 >
ベクトルに1を足すと、すべての要素に1が足されましたね。例えば、この処理を他のプログラミング言語でやろうとすると、for文などを使った繰り返し処理が必要になります。一方、Rではベクトルの機能により、その繰り返し処理を省略できます。これが後にデータの整形や集計に非常に役に立ってきます。
他の演算子でも試してみましょう。
> x <- 1:10 #1~10の数値を持つベクトルを作成 > x #ベクトルを表示 [1] 1 2 3 4 5 6 7 8 9 10 > > x + 1 #加 [1] 2 3 4 5 6 7 8 9 10 11 > x - 1 #減 [1] 0 1 2 3 4 5 6 7 8 9 > x * 10 #乗 [1] 10 20 30 40 50 60 70 80 90 100 > x / 10 #徐 [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 > x^2 #べき乗 [1] 1 4 9 16 25 36 49 64 81 100 > x %/% 10 #整数除算 [1] 0 0 0 0 0 0 0 0 0 1 > x %% 10 #剰余(割った余り) [1] 1 2 3 4 5 6 7 8 9 0 > > x == 5 [1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE > x != 5 [1] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE > x > 5 [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE > x >= 5 [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE > x < 5 [1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE > 5 <= 5 [1] TRUE > > x[ x > 5 ] #抽出 [1] 6 7 8 9 10 >
次回はいろいろなベクトルの作成方法を理解しましょう。