- 在线时间
- 27 小时
- 最后登录
- 2013-5-20
- 注册时间
- 2012-11-2
- 听众数
- 15
- 收听数
- 1
- 能力
- 0 分
- 体力
- 3870 点
- 威望
- 0 点
- 阅读权限
- 60
- 积分
- 1335
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 347
- 主题
- 320
- 精华
- 0
- 分享
- 0
- 好友
- 6
升级   33.5% TA的每日心情 | 奋斗 2013-6-15 16:58 |
---|
签到天数: 24 天 [LV.4]偶尔看看III
 群组: 第四届数学中国美赛实 |
矩阵(matrix) 矩阵生成函数matrix():matrix(data, nrow = , ncol = , byrow = F),其中,数据data是必须的,其他都是选择参数,可以不选。byrow = F默认为按列来排列数据,如果想要按行排列,令byrow = T。* B6 l1 M" }3 e' U0 D8 v$ x( s
1、对角矩阵和单位阵。& G' ^4 q/ Y W& j2 v& m& S$ w- }! H; R1 n
例1:x <- 1:6; diag(x) #对角矩阵
# l, b$ G8 U( W5 [$ i, _例2:y <- rep(1, 5); diag(y) #单位阵
) y1 h+ b, G+ b# _# @9 R9 @4 k2 r' \% i8 c2 D
2、矩阵下标8 M- x5 G/ [$ c1 \
例1:xx <- matrix(1:20, 4, 5)( m% u1 b0 O1 X7 P8 V
xx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]1 G9 X$ G' o0 \2 [
xx[2, ]; xx[ , 2]3 Z5 e9 V5 |0 J) F( P7 o
' j& j& n0 R" t% r0 N m
3、代数意义下的矩阵乘法"%*%"5 s' I! f' J' C6 B" c; A
例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3). W& j, \$ v( g5 D
yy %*% zz; zz %*% yy
! G9 A6 A, W: X6 U- n- _& ~& }% x g) Q5 f$ H& I! q3 B
4、矩阵行和列的维数; G0 i1 a( A' W5 u1 y) \
例1:xx <- matrix(1:20, 4, 5)
" S) e9 m9 o4 w6 Y. H2 zdim(xx) #行和列的维数
) X8 ^( C T& W9 W7 S) I1 S/ e; g8 ]- X& jnrow(xx); ncol(xx) #行数和列数
8 R! G2 @4 E. h8 x6 ~7 U2 Y+ v
! h+ g) c3 T+ F" O' L# S5、矩阵的主要运算函数
8 J+ g, ~- X3 T: L! Q) V例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵# n1 p' A/ P7 l# X. G. j7 q* s3 R
is.matrix(x); is.matrix(y) #判断是否矩阵% I! m, Z5 D" ?
例2: diag() #方阵对角线元素或者生成对角矩阵
0 W/ U& {4 ^1 ^0 U0 dapply() #对矩阵应用函数
9 x( ]; Z' T2 s* _* qeigen() #求特征值和特征向量' N' I, a% W3 v+ D V
solve() #求逆矩阵& U, F& o6 ]+ ^. ~/ }4 Y0 J
chol() #Choleski分解
" K0 v( z3 D" bsvd() #奇异值分解8 g! a* V. c9 Y
qr() #QR分解$ Z% l# r& y7 M% o r8 N1 @
det() #求行列式
% o; W/ y' v5 E! l% f" cdim() #给出行列数
. Z+ O/ }/ i8 _" F( Mt() #矩阵转置
2 C( f. \5 i6 \5 j1 K4 ]& U! \" A& p5 [/ `- e" p
6、矩阵合并9 E( e) l3 t& v- H+ B# U
例1:aa <- matrix(1:6, 3, 2); bb <- matrix(7:12, 3, 2)
# D$ B: \9 D% P% e, B- Jcbind(aa, bb) #按列合并
; { X0 K8 Q- s0 A5 p- o' ^rbind(aa, bb) #按行合并7 m2 \& X0 |7 Z9 m
5 @, X S4 K- {( \7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。
+ D5 S2 r/ W5 b% m! Y8 s0 _例1:xx <- matrix(1:20, 4, 5)
3 N5 b3 U4 J, h- ?3 t' p5 u: mcolMeans(xx) #列均值) q" W% w: o0 @. [
colSums(xx) #列和
7 V* [( F5 b0 B其余大部分都要用到apply()函数, j- ~5 ~" Q+ H
例2:xx <- matrix(1:20, 4, 5)
! P$ ~! U6 ^5 L- t+ e# c' P/ V2 H | Japply(xx, 2, mean) #列均值,等同于colMeans(xx)
1 f3 T: L9 _+ t* y! c# @apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。; J4 _* _- d# X' Z( P+ A' a6 h
apply(xx, 1, var) #行方差
) `4 F% a) y9 t' X6 fapply(xx, 2, max) #每列最大值2 `' l, F: l6 N
apply(xx, 2, rev) #每列的数反排列 I: [9 ? Q5 J9 b
; w4 ]. N% A. p4 S: ?0 l6 d# e0 J8 d- V, J
|
zan
|