R语言是一门非常方便的数据分析语言,它内置了许多处理矩阵的方法。下面列出一些常用的矩阵操作方法示例。

矩阵的生成

  1. > mat <- matrix(:, ncol = , nrow = , byrow=TRUE, dimnames=list(c(paste("x", :, sep = ".")), c(paste("y", :, sep = "."))))
  2. > mat
  3. y. y. y. y.
  4. x.
  5. x.
  6. x.
  7. x. 16
    # 矩阵的行列名还可以使用rownames或者colnames进行修改
  8. > rownames(mat) <- paste("row", :, sep=".")
  9. > colnames(mat) <- paste("col", :, sep=".")
    > mat
  10. col. col. col. col.
  11. row.
  12. row.
  13. row.
  14. row.

矩阵的维度

  1. # 表示这是一个4行4列的矩阵
    > dim(mat)
  2. []

矩阵的加减

  1. > mat. <- matrix(:, nrow = )
  2. > mat.
  3. [,] [,] [,] [,]
  4. [,]
  5. [,]
  6. [,]
  7. [,]
  8. > mat.plus <- mat + mat.
  9. > mat.plus
  10. col. col. col. col.
  11. row.
  12. row.
  13. row.
  14. row.
  15. > mat.minus <- mat - mat.
  16. > mat.minus
  17. col. col. col. col.
  18. row. - - - -
  19. row. - - - -
  20. row. - - - -
  21. row. - - - -

矩阵的转置

  1. > t(mat)
  2. row. row. row. row.
  3. col.
  4. col.
  5. col.
  6. col.

矩阵相乘

  1. # 若A矩阵的维度为m*n,那么B矩阵的维度应为n*p
    # 生成的结果矩阵的维度为m*p
  2. > mat. <- matrix(:, nrow = )
  3. > mat.
  4. [,] [,]
  5. [,]
  6. [,]
  7. [,]
  8. [,]
  9. > mat.mcl <- mat %*% mat.
  10. > mat.mcl
  11. [,] [,]
  12. row.
  13. row.
  14. row.
  15. row.

返回矩阵的对角

  1. > diag(mat)
  2. []

生成上三角或下三角矩阵

  1. # 生成上三角矩阵,注意这里的diag参数如果为TRUE,
  2. # 表示把矩阵对角也包括进来。设置为FALSE就是不包括。
  3. > mat[!upper.tri(mat, diag = TRUE)] <-
  4. > mat
  5. col. col. col. col.
  6. row.
  7. row.
  8. row.
  9. row.
  10. # 生成下三角矩阵
  11. > mat[!lower.tri(mat, diag = TRUE)] <-
  12. > mat
  13. col. col. col. col.
  14. row.
  15. row.
  16. row.
  17. row.

求解逆矩阵

  1. > solve(mat)
  2. row. row. row. row.
  3. col. 1.00000000 6.832142e-17 0.00000000 0.0000
  4. col. -0.83333333 1.666667e-01 0.00000000 0.0000
  5. col. -0.06060606 -1.515152e-01 0.09090909 0.0000
  6. col. -0.02651515 -3.787879e-03 -0.08522727 0.0625

求行列式的值

  1. > det(mat)
  2. [] 4.733165e-30

矩阵的特征值和特征向量

  1. > mat.e <- eigen(mat)
  2. > mat.e
  3. eigen() decomposition
  4. $values
  5. [] 3.620937e+01 -2.209373e+00 -3.188632e-15 -1.348401e-16
  6.  
  7. $vectors
  8. [,] [,] [,] [,]
  9. [,] -0.1511543 0.7270500 0.5037002 -0.06456091
  10. [,] -0.3492373 0.2832088 -0.8319577 -0.31932112
  11. [,] -0.5473203 -0.1606324 0.1528148 0.83232496
  12. [,] -0.7454033 -0.6044736 0.1754427 -0.44844294
  13. # 可以使用mat.e$values和mat.e$vectors取出结果

奇异值分解

  1. > svd(mat)
  2. $d
  3. [] 3.862266e+01 2.071323e+00 7.609772e-16 3.860638e-16
  4.  
  5. $u
  6. [,] [,] [,] [,]
  7. [,] -0.1347221 -0.82574206 0.3812474 -0.39325613
  8. [,] -0.3407577 -0.42881720 -0.2152141 0.80850658
  9. [,] -0.5467933 -0.03189234 -0.7133141 -0.43724476
  10. [,] -0.7528288 0.36503251 0.5472808 0.02199431
  11.  
  12. $v
  13. [,] [,] [,] [,]
  14. [,] -0.4284124 0.7186535 0.2825595 -0.4692122
  15. [,] -0.4743725 0.2738078 -0.7264762 0.4150089
  16. [,] -0.5203326 -0.1710379 0.6052738 0.5776189
  17. [,] -0.5662928 -0.6158835 -0.1613571 -0.5234156

QR分解

  1. > qr(mat)
  2. $qr
  3. col. col. col. col.
  4. row. -16.6132477 -18.2986497 -1.998405e+01 -2.166945e+01
  5. row. 0.3009646 -1.0767638 -2.153528e+00 -3.230291e+00
  6. row. 0.5417363 -0.3456506 1.350645e-15 3.139336e-15
  7. row. 0.7825080 -0.9120325 1.643990e-01 7.300782e-17
  8.  
  9. $rank
  10. []
  11.  
  12. $qraux
  13. [] 1.060193e+00 1.220731e+00 1.986394e+00 7.300782e-17
  14.  
  15. $pivot
  16. []
  17.  
  18. attr(,"class")
  19. [] "qr"
  20. > qr.Q(qr(mat))
  21. [,] [,] [,] [,]
  22. [,] -0.06019293 -0.83449195 -0.3906679 -0.3838992
  23. [,] -0.30096463 -0.45762462 0.2347489 0.8030523
  24. [,] -0.54173634 -0.08075729 0.7025058 -0.4544068
  25. [,] -0.78250805 0.29611005 -0.5465868 0.0352538
  26. > qr.R(qr(mat))
  27. col. col. col. col.
  28. row. -16.61325 -18.298650 -1.998405e+01 -2.166945e+01
  29. row. 0.00000 -1.076764 -2.153528e+00 -3.230291e+00
  30. row. 0.00000 0.000000 1.350645e-15 3.139336e-15
  31. row. 0.00000 0.000000 0.000000e+00 7.300782e-17

R语言常用的矩阵操作的更多相关文章

  1. 【R】R语言常用函数

    R语言常用函数 基本 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character:字符型向量 list:列表 data.frame:数据框c:连接为向量或 ...

  2. R语言文件相关的操作

    1. 文件系统介绍 R语言对文件系统的操作,包括文件操作和目录操作,函数API都定义在base包中. 2. 目录操作 2.1 查看目录 查看当前目录下的子目录. # 启动R程序 ~ R # 当前的目录 ...

  3. R语言编程艺术# 矩阵(matrix)和数组(array)

    矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也是和向量一样,有模式(数据类型)的概念.(但反过来,向量却不能看作是只有一列或一行的矩阵. 数组(array)是R里更一 ...

  4. R语言常用数据管理

    1.变量的重命名 (1)交互式编辑器修改变量名 若要修改数据集x中的变量名,键入fix(x)即可打开交互式编辑器的界面.若数据集为矩阵或数据框,单击交互式编辑器界面中对应要修改的变量名,可手动输入新的 ...

  5. R语言进行文件夹操作示例(转)

    rm(list=ls())path = 'J:/lab/EX29 --在R语言中进行文件(夹)操作'setwd(path)cat("file A\n", file="A& ...

  6. R语言常用函数:交集intersect、并集union、找不同setdiff、判断相同setequal

    在R语言进行数据分析时,经常需要找不同组间的相同和不同,那你应该掌握如下几个函数,让你事半功倍. 交集intersect两个向量的交集,集合可以是数字.字符串等 # 两个数值向量取交集intersec ...

  7. R语言常用操作

    1 取整运算 在编程实现的时候有时会碰到对数值取整的需求,而取整的方式却多种多样,依赖于具体问题,不过在R中已经配备了种类齐全的相关函数,主要包括以下五种: floor():向下取整: ceiling ...

  8. R语言︱常用统计方法包+机器学习包(名称、简介)

    一.一些函数包大汇总 转载于:http://www.dataguru.cn/thread-116761-1-1.html 时间上有点过期,下面的资料供大家参考基本的R包已经实现了传统多元统计的很多功能 ...

  9. R语言常用包汇总

    转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...

随机推荐

  1. ReactNative---组件种类

  2. Docker基础内容之数据持久化

    数据卷的特性 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS 数据卷可以在容器之间共享和重用,相当于将一个分区挂载到多个目录下面 数据卷内容的修改会立马生效 数据卷的更新,不会影响镜像: ...

  3. spring源码系列(二):IOC接口设计分析

    这里主要对springIOC接口体系进行简单的概述和分析,具体每个接口详细分析在下面目录: 参考内容: <Spring技术内幕:深入解析 Spring架构与设计原理> 和 <Spri ...

  4. DataTable 相关

    1.对表的初始化 //创建表 DataTable table = new DataTable(); //添加列 table.Columns.Add("ID", typeof(Int ...

  5. K8s下部署Istio

    一.环境准备 1.1环境信息 主机名 IP地址 用途 zhengzw-k8s-master 10.10.100.7 K8s Master zhengzw-k8s-node-1 10.10.100.15 ...

  6. 项目SpringMVC+Spring+Mybatis 整合环境搭建(1)-> Spring+Mybatis搭建

    目录结构 第一步:web.xml 先配置contextConfigLocation 对应的application-context.xml文件 打开webapp\WEB-INF\web.xml, 配置s ...

  7. P4语言环境安装(一)前端编译器p4c、后端编译器p4c-bm2-ss

    这个P4安装环境是在2020-2-8安装的,安装环境卡了我好几天,把遇到的问题记录下来,有需要的同学可以参考一下,要是说错了或者有问题的话,评论或mail:guidoahead@163.com联系我都 ...

  8. JAVA编程学习之JAVA集合

    一.JAVA集合类 为了保存数量不确定的数据,以及保存具有映射关系的数据(关联数组),java提供了集合类.所有集合类位于java.util包下. 集合类就像容是器,现实生活中容器的功能,无非就是添加 ...

  9. ARTS Week 15

    Feb 3, 2020 ~ Feb 9, 2020 Algorithm Problem 172.Factorial Trailing Zeroes(阶乘末尾的0) 题目链接 题目描述:给定一个整数n, ...

  10. HDU6191 Query on A Tree (01字典树+启发式合并)

    题意: 给你一棵1e5的有根树,每个节点有点权,1e5个询问(u,x),问你子树u中与x异或最大的值是多少 思路: 自下而上启发式合并01字典树,注意合并时清空trie 线段树.字典树这种结构确定的数 ...