zoukankan      html  css  js  c++  java
  • 【转】R函数-diag()函数

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/lili_wuwu/article/details/51909229


    diag()提取或替换一个矩阵的对角线,或构造一个对角矩阵。
    语法:
    diag(x = 1, nrow, ncol)
    diag(x) <- value
    解析:
    x:一个矩阵,向量或一维数组,或不填写。
    nrow, ncol:可选 行列。
    value :对角线的值,可以是一个值或一个向量。

    例子

    > x <- matrix(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
    > diag(x)
    [1]  1  6 11 16

    #展示x的对角线数据

    > diag(diag(x))
         [,1] [,2] [,3] [,4]
    [1,]    1    0    0    0
    [2,]    0    6    0    0
    [3,]    0    0   11    0
    [4,]    0    0    0   16

    #由x的对角线数据生成对角矩阵

    > diag(4)
         [,1] [,2] [,3] [,4]
    [1,]    1    0    0    0
    [2,]    0    1    0    0
    [3,]    0    0    1    0
    [4,]    0    0    0    1

    #对角线为4个元素每个元素默认为1的对角矩阵

    > diag(10,3,4)
         [,1] [,2] [,3] [,4]
    [1,]   10    0    0    0
    [2,]    0   10    0    0
    [3,]    0    0   10    0

    #对角线数据位10,三行四列的矩阵

    > a<-diag(4)+1
    > a
         [,1] [,2] [,3] [,4]
    [1,]    2    1    1    1
    [2,]    1    2    1    1
    [3,]    1    1    2    1
    [4,]    1    1    1    2
    

      

    看几个较复杂的例子
    例1

    > all(diag(1:3) == {m <- matrix(0,3,3); diag(m) <- 1:3; m})
    [1] TRUE
    

     

    例2

    > diag(var(M <- cbind(X = 1:5, Y = stats::rnorm(5))))
           X        Y 
    2.500000 0.472455 
    

      

    例3

    > rownames(M) <- c(colnames(M),rep("",3))
    > M
      X         Y
    X 1  0.337440
    Y 2  0.129876
      3  1.251390
      4 -0.382447
      5 -0.451144
    

     

    版权声明:本文为CSDN博主「lili_wuwu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lili_wuwu/article/details/51909229

  • 相关阅读:
    [oldboy-django][2深入django]老师管理--查看,添加,编辑
    全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念?
    Ansible Jinja if 生成不同的MySQL文件
    Linux内核优化(未注释)
    CentOS7入门到精通实战课程课后习题
    基于sersync海量文件实时同步
    CentOS6系统优化
    lnmp架构实现动态php
    云计算与虚拟化KVM深度实践
    Linux6系统安装
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/11503974.html
Copyright © 2011-2022 走看看