【Rその4】ベクトルの作成と計算

ベクトルを一言で言うと、複数の値を要素として持つオブジェクトです。プログラミング言語を学んだ方であれば、配列と同じと考えてもらえば分かりやすいかもしれません。

 

ベクトルをつくってみましょう

> 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つのベクトルに異なるデータ型があると強制的に一つのデータ型に変換されます。どのデータ型が優先されるかは、データ型の表現力に依存します。具体的には、下記の表に示す順番に従って優先的に強制変換されます。

順位データ型内容
1character文字型
2complex複素数型
3double実数型
4logical論理型

 

ベクトルの要素に名前を付ける

> 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
>

 

次回はいろいろなベクトルの作成方法を理解しましょう。

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