织梦CMS - 轻松建站从此开始!

欧博ABG官网-欧博官方网址-会员登入

R による行欧博列の演算

时间:2026-01-22 12:55来源: 作者:admin 点击: 3 次
行列 2019.06.15 R の行列は数学の行列とほぼ同じ概念である。行と列からなる、2 次元配置のデータである。2 次元配置のデータ型は、行列のほかに、データフレームもある。行列について、行列に含まれるすべての要素が同じ属性を持つ必要がある。言い換えると、行列に含まれてい

行列 2019.06.15

R の行列は数学の行列とほぼ同じ概念である。行と列からなる、2 次元配置のデータである。2 次元配置のデータ型は、行列のほかに、データフレームもある。行列について、行列に含まれるすべての要素が同じ属性を持つ必要がある。言い換えると、行列に含まれているすべての要素は同じ単位である必要がある。また、R では、行列に似たものでデータフレームと呼ばれる概念が存在する。データフレームは、行列とは異なり、列ごとに異なる単位を持つことができる。

行列の作成

行列は matrix 関数に行列の要素、列数、行数を指定して作成する。

matrix(1:9, nrow = 3, ncol = 3) ## [,1] [,2] [,3] ## [1,] 1 4 7 ## [2,] 2 5 8 ## [3,] 3 6 9 matrix(1:9, nrow = 3, ncol = 3, byrow = T) ## [,1] [,2] [,3] ## [1,] 1 2 3 ## [2,] 4 5 6 ## [3,] 7 8 9

行列の行と列に名前を付けることができる。

m <- matrix(1:12, nrow = 3, ncol = 4) colnames(m) <- c("A", "B", "C", "D") rownames(m) <- c("first", "second", "third") m ## A B C D ## first 1 4 7 10 ## second 2 5 8 11 ## third 3 6 9 12 行列の要素

行列から要素を取り出すとき、角括弧を利用して、行数と列数を指定して行う。行数と列数を複数指定することで、複数の要素を取り出すことができる。また、行数だけを指定して、列数を両略する場合は、指定された行の行ベクトルを取得できる。

x <- matrix(c(1:16), nrow = 4, ncol = 4) x ## [,1] [,2] [,3] [,4] ## [1,] 1 5 9 13 ## [2,] 2 6 10 14 ## [3,] 3 7 11 15 ## [4,] 4 8 12 16 x[3, 2] ## [1] 7 ## x[3, ] [1] 3 7 11 15 x[-3, ] ## [,1] [,2] [,3] [,4] ## [1,] 1 5 9 13 ## [2,] 2 6 10 14 ## [3,] 4 8 12 16 x[c(1,2),c(3,4)] ## [,1] [,2] ## [1,] 9 13 ## [2,] 10 14

行列の行と列に名前が付けられている場合、行名と列名で要素を取得できる。

m <- matrix(1:12, nrow = 3, ncol = 4) colnames(m) <- c("A", "B", "C", "D") rownames(m) <- c("first", "second", "third") m[, "D"] ## first second third ## 10 11 12 m[c("first", "second"), c("B", "C", "D")] ## B C D ## first 4 7 10 ## second 5 8 11 行列の計算   入力式   意味  
-   -A   各成分に(-1)をかける。逆行列を計算しているわけではない。  
*   A * B   各成分をそれぞれ個別に積をとる。すなわち、aij*bijを計算している。行列の積を計算しているわけではない。  
%*%   A %*% B   行列 A と行列 B の積。すなわち、Σaij*bji を計算している。  
+   A + B   行列 A と行列 B の和。  
-   A - B   行列 A と行列 B の差。  
A <- matrix(1:9, 3, 3) B <- matrix(1:9, 3, 3) A + B ## [,1] [,2] [,3] ## [1,] 2 8 14 ## [2,] 4 10 16 ## [3,] 6 12 18 A * B ## [,1] [,2] [,3] ## [1,] 1 16 49 ## [2,] 4 25 64 ## [3,] 9 36 81 A %*% B ## [,1] [,2] [,3] ## [1,] 30 66 102 ## [2,] 36 81 126 ## [3,] 42 96 150

固有値や逆行列は、R の関数で計算する。

  意味  
rowSums(x)   行列 x の各行の総和  
solSums(x)   行列 x の各列の総和  
rowMeans(x)   行列 x の各行の平均  
colMeans(x)   行列 x の各列の平均  
t(x)   行列 x を転置  
solve(x)   行列 x の逆行列  
diag(n)   n 行 n 列の単位行列  
diag(a1:an)   対角成分が (a1, a2, …, an) の対角行列  
x[upper.tri(x)] <- n   対角成分を除く上三角成分をすべて n に置換  
x[lower.tri(x)] <- n   対角成分を除く下三角成分をすべて n に置換  
sum(x^n)   行列 x の n 乗積  
crossprod(x)   行列 x のベクトル積  
crossprod(x,y)   行列 x と行列yの内積  
eigen(x)   行列 x の固有値と固有ベクトル  
det(x)   行列 x の行列式  
X <- diag(1:3) X ## [,1] [,2] [,3] ## [1,] 1 0 0 ## [2,] 0 2 0 ## [3,] 0 0 3 ## X[upper.tri(X)] <- 4 X ## [,1] [,2] [,3] ## [1,] 1 4 4 ## [2,] 0 2 4 ## [3,] 0 0 3 det(X) ## [1] 6 eigen(X) ## $values ## [1] 3 2 1 ## $vectors ## [,1] [,2] [,3] ## [1,] 0.92450033 0.9701425 1 ## [2,] 0.36980013 0.2425356 0 ## [3,] 0.09245003 0.0000000 0 solve(X) ## [,1] [,2] [,3] ## [1,] 1 -2.0 1.3333333 ## [2,] 0 0.5 -0.6666667 ## [3,] 0 0.0 0.3333333 行列の結合

2 つの行列を、横方向で結合するとき(列の結合)は cbind 関数を使う。2 つの行列を、縦方向で結合するとき(行の結合)は rbind 関数を使う。

a <- matrix(1:9, 3, 3) b <- matrix(11:19, 3, 3) rbind(a, b) ## [,1] [,2] [,3] ## [1,] 1 4 7 ## [2,] 2 5 8 ## [3,] 3 6 9 ## [4,] 11 14 17 ## [5,] 12 15 18 ## [6,] 13 16 19 cbind(a, b) ## [,1] [,2] [,3] [,4] [,5] [,6] ## [1,] 1 4 7 11 14 17 ## [2,] 2 5 8 12 15 18 ## [3,] 3 6 9 13 16 19

(责任编辑:)

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2026-01-23 23:01 最后登录:2026-01-23 23:01
栏目列表
推荐内容