ベクトル
ベクトルは以下のように作ることができる。
v1 <- c(1, 2, 3, 4, 5) # [1] 1 2 3 4 5
v2 <- 1:5 # [1] 1 2 3 4 5
v3 <- seq(1, 9, 2) # [1] 1 3 5 7 9
v4 <- rep(1, 5) # [1] 1 1 1 1 1
v5 <- rep(1:2, 2) # [1] 1 2 1 2
v1 と v2 は同じベクトルを作る。[1:5]という表記は forループ などでもよく見る形だが、それ自体に演算子を施す場合には注意が必要。
n <- 5
for (i in 1:n-1) {
print(i)
}
# [1] 0
# [1] 1
# [1] 2
# [1] 3
# [1] 4
上記コードは 1-4 を表示させようとしたのだが、 0-4 が表示されている。 v1 と v2 が同じものを意味することを理解していると、このコードのミスがわかる。 v1 の表記で forループ を書き直すと以下のようになる。
for (i in c(1, 2, 3, 4, 5)-1) {
print(i)
}
-1 がベクトル全体に施されていることがわかる。Rではこのように、ベクトル全体に引き算が施されるため気をつける必要がある。上記の場合は 1:(n-1) のように -1 が反映される範囲を意識する。
ベクトルの内積
Rではベクトルの基本演算は、すべて要素ごとで実施される。ベクトルの内積を行うときには %*% という演算子を用いる。
vec1 <- 1:5
vec2 <- seq(2, 10, 2)
vec1 * vec2 # [1] 2 8 18 32 50 要素同士の掛け算
vec1 %*% vec2 # [1] 110 ベクトルの内積
行列
matrix関数で行列を作成、cbind関数やrbind関数で既存のベクトルを結合して行列を作成することができる。例は省略。colnames関数やrownames関数を使うことで列名や行名を変更でき、行列の転置を取る場合はt関数を使用。
特別な行列
行列にはいくつか特別なものがあり、それらを作成する場合は専用の関数がある。ここでは、対角行列と単位行列を作成する diag関数 を紹介する。
diag(c(1, 2, 3)) # 対角要素に 1, 2, 3 を持つ対角行列を作成
diag(3) # 対角要素の個数だけを指定した場合は単位行列を作成
行列の演算
行列式を求める det関数、逆行列を求める solve関数、固有値・固有ベクトルを求める eigen関数 がある。例は省略。