第8章 ベクトル・行列の基礎 Rによるベクトル・行列の表現と計算法 8.1 スカラーとベクトル • スカラー 単一の値を持つもの • ベクトル 複数の値を縦もしくは横に並べたもの 例: x <- 10 y <- c(1,2,4) # xの値はスカラー # yの値はベクトル 8.2 ベクトル (1) ベクトルをつくるための基本関数: c 例: veca <- c(1,2,3,4,5) 別の方法 : seq rep 例: veca2 <- 1:5 veca4 <- 10:1 veca6 <- seq(1,5,1) vecc <- rep(1,8) 8.2 ベクトル(続き) (2) ベクトルの基本演算 以下ではveca, vecbはベクトル veca <- 1:5 ; vecb <- seq(2,10,2) 加算 例: veca + vecb # =c(3,6,9,12,15) 減算 例: veca – vecb # =c(-1,-2,-3,-4,-5) 8.2.1ベクトルの基本演算(続き) 以下ではveca, vecbはベクトル veca <- 1:5 ; vecb <- seq(2,10,2) 掛け算 例: veca * vecb # =c(2,8,18,32,50) 割算 例: veca / vecb # =c(0.5, 0.5, 0.5, 0.5, 0.5) 内積 例: veca %*% vecb # 110 = sum(veca*vecb) 8.2.1ベクトルの基本演算(続き) 以下ではveca, vecbはベクトル veca <- 1:5 ; vecb <- seq(2,10,2) スカラー倍 例: veca*5 # = c(5,10,15,20,25) サイズが一致しないベクトル同士の足し算 例: veca+c(2,4) # = c(3,6,5,8,7) 警告はでるが1+2,2+4,3+2,4+4,5+2と計算 掛け算の場合も同様 8.2 ベクトル(続き) (3) ベクトルの要素を取り出す veca <- 11:20 一個の値の取り出し veca[2] で2番目の要素 12 が取り出せる 複数の値の取り出し 例: veca[3:7] # = 13:17 例: veca[c(2,4,6,8)] # = c(12,14,16,18) 8.3 行列 行列 縦横にデータの値が並べられたもの 例:n人の人がそれぞれp個の変数の値を持つ ⇒ n x pの行列 行列を作るための関数 matrix, cbind, rbindなど 例: matrix(1:12,nrow=3,ncol=4) matrix(1:12,3,4) 1 4 7 10 matrix(1:12,nrow=3) 2 5 8 11 matrix(1:12,ncol=4) 3 6 9 12 列方向優先の割り当て 8.3 行列(続き) 行方向優先の割り当て方法 matrix(1:12,nrow=3,ncol=4,byrow=TRUE) 1 2 3 4 5 6 7 8 9 10 11 12 8.3 行列(続き) 以下ではveca, vecbはベクトル veca <- 1:5 ; vecb <- seq(2,10,2) 複数のベクトルを並べて行列を作る 1 * 列ベクトルを横に追加 2 cbind(veca,vecb) 3 4 * 行ベクトルを縦に追加 5 rbind(veca,vecb) 1 2 3 4 5 2 4 6 8 10 2 4 6 8 10 8.3 行列(続き) 行列の行や列に名前をつける 行に名前をつける: rownames 列に名前をつける: colnames 例: mata <- matrix(1:6,nrow=2,ncol=3) rownames(mata) <- c(“row1”,”row2”) colnames(mata) <- c(“col1”,”col2”,”col3”) col1 col2 col3 row1 1 3 5 row2 2 4 6 8.3 行列(続き) 行列の四則演算 例: mata <- matrix(1:6,nrow=2,ncol=3) matb <- matrix(3:8,nrow=2,ncol=3) 1 3 5 足し算: mata + matb 2 4 6 引き算: mata – matb 3 5 7 掛け算: mata * matb 4 6 8 割り算: mata / matb mata mata - matb + matb = = 4-2 8-2 12 -2 6-2 10 -2 14 -2 8.3 行列(続き) 1 mata = 2 転置の関数: t 3 例: t(matb) matb = 4 行列の積 t(matb)= 例: t(matb) %*% mata mata %*% t(matb) t(matb) %*% mata = 5 4 6 5 7 6 8 25 39 17 39 61 23 53 83 3*1+4*2= 11 3 3 4 5 6 7 8 8.3 行列(続き) 1 4 特別な行列 2 5 (1) 正方行列 3 6 行の数と列の数が等しい 対角要素 (2) 対角行列 1 0 非対角要素がすべて0 0 2 diag(c(1,2,3)) 0 0 (3) 単位行列 対角要素がすべて1の対角行列 1 0 diag(3) 7 8 9 0 0 3 0 0 1 0 0 0 1 8.3 行列(続き) 行列の要素を取り出す matd[2,] matd = 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 matd[,2] matd[2,4] 8.3 行列(続き) 行列の演算 (1) 行列式 det (2) 逆行列 solve ただし、逆行列が存在する場合に限る そうでないとエラーになる 固有値と固有ベクトル eigen 得られるのはlist型のオブジェクト($valuesと$vectors でそれぞれ固有値と固有ベクトルを得られる)
© Copyright 2024 ExpyDoc