数学建模社区-数学中国
标题:
R语言入门基础之矩阵
[打印本页]
作者:
数模天下
时间:
2012-12-24 14:04
标题:
R语言入门基础之矩阵
矩阵(matrix)
矩阵生成函数matrix():matrix(data, nrow = , ncol = , byrow = F),其中,数据data是必须的,其他都是选择参数,可以不选。byrow = F默认为按列来排列数据,如果想要按行排列,令byrow = T。
7 Z: W9 R0 Q. I
1、对角矩阵和单位阵。
1 t( D3 O- `/ u5 h; v% @+ \+ t
例1:x <- 1:6; diag(x) #对角矩阵
% a3 T! q. _5 m9 v/ n+ a3 W! |
例2:y <- rep(1, 5); diag(y) #单位阵
) @6 _ u) w" C0 {. U% y
; _. _" L1 Z2 g# z" ^$ P" H
2、矩阵下标
+ L0 n7 r. O4 H$ B; x
例1:xx <- matrix(1:20, 4, 5)
4 X- |) R3 M$ X
xx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]
& I3 _: P% |" g/ K0 R. @; x5 ^& D
xx[2, ]; xx[ , 2]
0 H5 T b' {, m V) t' m$ k
9 I, k% K$ _' }2 d, T5 `0 d
3、代数意义下的矩阵乘法"%*%"
" k' m0 s/ f- ]! M2 G5 c
例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3)
0 M5 t2 h+ Z( x
yy %*% zz; zz %*% yy
4 z" ^# i8 [) k, c5 q3 e0 L
J( K& `4 x8 |. G- L
4、矩阵行和列的维数
! x% ~# M+ @, k
例1:xx <- matrix(1:20, 4, 5)
/ |6 N5 d( A; B$ _2 T7 X
dim(xx) #行和列的维数
6 D$ @, G. l3 m* d9 P5 X
nrow(xx); ncol(xx) #行数和列数
; b# Q K4 C7 W2 w# E
7 p/ r1 O2 P9 f5 y/ s
5、矩阵的主要运算函数
4 J/ g# [. ^7 d: n0 U
例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵
$ y: V" J' U% }3 Q: [
is.matrix(x); is.matrix(y) #判断是否矩阵
! c- r: x# [' {0 ~0 ?
例2: diag() #方阵对角线元素或者生成对角矩阵
- z1 a7 ^) o+ O& V: X0 T+ j t& P
apply() #对矩阵应用函数
0 o6 W2 ]7 u7 L* i! z
eigen() #求特征值和特征向量
8 I7 Q$ Y R. x
solve() #求逆矩阵
8 T; x2 v6 k/ @3 U
chol() #Choleski分解
3 @0 v; w3 K+ L4 g
svd() #奇异值分解
2 H4 m+ i+ A" S: A3 s' P7 {' X
qr() #QR分解
) H5 c! \& q9 |5 Z* c
det() #求行列式
_/ x' r- @; p% C2 z/ d* x2 o
dim() #给出行列数
" F( @) `5 q! R# t& ?+ z8 W
t() #矩阵转置
9 n/ c' i$ W* w6 D4 z# ~
0 V+ ^2 X+ s' F5 l& S
6、矩阵合并
# s b; g8 ~( K0 R
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)
% x. Z9 q% M' |& ?3 t: V
cbind(aa, bb) #按列合并
! n* L4 I/ }' s' t3 Y# o
rbind(aa, bb) #按行合并
* W6 J4 [2 K" F$ i0 m1 ^9 _
0 G: |3 E: O- `3 ~
7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。
- c0 I$ O) ?1 c) Q6 o1 Q9 N4 ]* w8 d" V% `
例1:xx <- matrix(1:20, 4, 5)
& A* o8 z9 l5 p+ {" h
colMeans(xx) #列均值
6 Q& x4 k& G+ [2 b
colSums(xx) #列和
* c5 {( M# y1 L. Z$ z) f
其余大部分都要用到apply()函数
. Y w$ Y; u+ v
例2:xx <- matrix(1:20, 4, 5)
7 m( W) ^! t$ X" T. R
apply(xx, 2, mean) #列均值,等同于colMeans(xx)
2 H+ b( C( F6 Q; s( d; a7 R. l
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。
( W8 @4 d' d7 Z0 y" O
apply(xx, 1, var) #行方差
5 \; y2 z% ]+ u4 F! S
apply(xx, 2, max) #每列最大值
* @4 Y3 [! _3 i% h
apply(xx, 2, rev) #每列的数反排列
* O' e0 b- s7 ~2 D/ _
/ M! y7 D# V$ D$ o, ~ R! B9 I
! ^+ O' }* `; l5 D! ?% ]* q
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5