0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rでベクトル・行列を扱う

Posted at

ベクトル

ベクトルは以下のように作ることができる。

vector.R
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ループ などでもよく見る形だが、それ自体に演算子を施す場合には注意が必要。

for.R
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ループ を書き直すと以下のようになる。

mistake.R
for (i in c(1, 2, 3, 4, 5)-1) {
  print(i)
}

-1 がベクトル全体に施されていることがわかる。Rではこのように、ベクトル全体に引き算が施されるため気をつける必要がある。上記の場合は 1:(n-1) のように -1 が反映される範囲を意識する。

ベクトルの内積

Rではベクトルの基本演算は、すべて要素ごとで実施される。ベクトルの内積を行うときには %*% という演算子を用いる。

innerProduct.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.R
diag(c(1, 2, 3)) # 対角要素に 1, 2, 3 を持つ対角行列を作成
diag(3)          # 対角要素の個数だけを指定した場合は単位行列を作成

行列の演算

行列式を求める det関数、逆行列を求める solve関数、固有値・固有ベクトルを求める eigen関数 がある。例は省略。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?