QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2363|回复: 0
打印 上一主题 下一主题

R语言入门基础之矩阵

[复制链接]
字体大小: 正常 放大

320

主题

15

听众

1335

积分

升级  33.5%

  • TA的每日心情
    奋斗
    2013-6-15 16:58
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    群组第四届数学中国美赛实

    跳转到指定楼层
    1#
    发表于 2012-12-24 14:04 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定

    矩阵(matrix)

    矩阵生成函数matrix():matrix(data, nrow = , ncol = , byrow = F),其中,数据data是必须的,其他都是选择参数,可以不选。byrow = F默认为按列来排列数据,如果想要按行排列,令byrow = T。
    - ~! o% a+ ~  }  f, }1、对角矩阵和单位阵。( [9 J8 l1 `& Z( S; ^2 @4 j  S
    例1:x <- 1:6; diag(x) #对角矩阵" ]; G( U9 e# z0 ^; P# B
    例2:y <- rep(1, 5); diag(y) #单位阵
    $ L( m. c4 ]1 n5 C$ s: {0 k9 ], q# b4 H# J, O9 Y: u
    2、矩阵下标
    ' B$ w7 [% i- B; `; U9 T: j- U( q例1:xx <- matrix(1:20, 4, 5)
    ( D# j, i- F  Y" o" k. Y+ ixx[2, 2]; xx[2, 3:5]; xx[3:4, 3:4]
    3 X! b4 O  N: D6 W# A+ ~5 {xx[2, ]; xx[ , 2]
    ( [8 r* o# U* b
    & _* i! e2 k5 M8 i& t3、代数意义下的矩阵乘法"%*%"
    - \" }7 N8 N. [例1:yy <- matrix(1:6, 3, 2); zz <- matrix(1:6, 2, 3); D+ C) D+ i1 G& ?0 ^5 B/ B
    yy %*% zz; zz %*% yy) Y6 |" i7 D7 X4 h# G) I; H9 m

    5 X7 `" H- _7 Y2 l9 r4、矩阵行和列的维数1 A' g. t' c; }, o0 H
    例1:xx <- matrix(1:20, 4, 5)7 C+ n, X7 G( p, k/ R2 ]
    dim(xx) #行和列的维数4 A; q1 i; _! k9 r. V8 i
    nrow(xx); ncol(xx) #行数和列数
    " @/ S/ d2 ~& \9 W6 s& L: `8 R7 Q# {$ ^7 O5 h1 E8 q. E/ D% f
    5、矩阵的主要运算函数9 c# ]* e8 W; m2 g$ q
    例1:x <- 1:6; y <- as.matrix(x) #转换成矩阵" u3 A7 o  Y4 p, x, ^1 k* R; {
    is.matrix(x); is.matrix(y) #判断是否矩阵
    3 S6 U: Z9 n7 }+ u) Q! j3 [  M例2:   diag() #方阵对角线元素或者生成对角矩阵( n, j* k" q3 h7 ^3 K, ]
    apply() #对矩阵应用函数+ w4 _4 e/ E$ Z0 e8 _' r! i9 e
    eigen() #求特征值和特征向量
    " ^4 j2 u' R" a$ c/ t- Ssolve() #求逆矩阵
    : b) p1 s( Y, }, i. dchol() #Choleski分解
    ( T" a5 L5 F" Q. zsvd() #奇异值分解2 i/ ^/ p: \! [6 l2 y3 k8 Q+ I
    qr() #QR分解/ u' N; b7 E' u  ]1 Y. J6 c
    det() #求行列式; `" s# W; k: x
    dim() #给出行列数3 M) Z4 u- z1 B
    t() #矩阵转置
    1 Q3 ]# x2 e2 n! `4 K$ d7 }5 L; g: `, N8 }& ?' f
    6、矩阵合并
    1 `& i* j- X2 B; X- A例1:aa <- matrix(1:6, 3, 2);  bb <- matrix(7:12, 3, 2)
    $ L4 K8 j0 z% [; I/ u0 ucbind(aa, bb) #按列合并9 A* A4 N+ i  |0 l. b, k
    rbind(aa, bb) #按行合并" m) L, Z: r! z6 [: Y# A$ Q4 m

    5 |- b( \+ j1 L# q  ^7、矩阵apply()运算函数:语法是apply(data, dim, function),dim取1表示对行运用函数,取2表示对列运用函数。! m; g9 v' {  o' Y
    例1:xx <- matrix(1:20, 4, 5)+ u+ N5 ]5 y" N# e0 ^# T
    colMeans(xx) #列均值
    - Q0 ?% t+ Y# D  P- [colSums(xx) #列和" U" p+ `" V; u! W- Y" u) b1 ?8 U
    其余大部分都要用到apply()函数: R1 k- J5 k: w' ^% b4 |4 D, |
    例2:xx <- matrix(1:20, 4, 5)
    4 z- H0 {" p/ L" oapply(xx, 2, mean) #列均值,等同于colMeans(xx). s5 N0 t  z, a4 N
    apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。' b+ J, I4 M5 b8 v9 F* A8 {
    apply(xx, 1, var) #行方差
    ' t' {* ?+ ~/ f6 q5 n: z( Gapply(xx, 2, max) #每列最大值
    0 V2 `4 j5 k' zapply(xx, 2, rev) #每列的数反排列
    % h8 d2 R: p/ Z& j3 `
    6 n; k% D, y+ L2 }
    % y4 o+ g! N! \8 _
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-13 23:12 , Processed in 0.290440 second(s), 49 queries .

    回顶部