入门必学 | R语言将全矩阵转化为上三角或下三角矩阵

这篇具有很好参考价值的文章主要介绍了入门必学 | R语言将全矩阵转化为上三角或下三角矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


   将全矩阵转化成上三角矩阵或者下三角矩阵,这是R语言基础,入门必学。在过程中,主要使用diag函数以及matrix、paste、dim、t等函数的使用。

构建一个新的矩阵

# 构建一个完整的矩阵
mat.1 <- matrix(1:16, # 1—16个向量
         ncol = 4, # 4列
         nrow = 4, # 4行
         byrow=TRUE, # byrow=T 表示向量按行的顺序进行,
                     #默认的话,会按列的顺序进行排列
      dimnames = list(c(paste("x", 1:4, sep = ".")),
# 对维度(行列)进行命名, 可以这么看list(x,y) 表示行列
          c(paste("y", 1:4, sep = ".")))) # x由x.1....x.4组成,
                                         # y由y.1....y.4组成
mat.1

输出结果:
r语言三角矩阵,【R基础知识】,r语言,矩阵,开发语言

修改矩阵的行列名

# 矩阵的行列名还可以使用rownames或者colnames进行修改
rownames(mat.1) <- paste("row", 1:4, sep=".")
colnames(mat.1) <- paste("col", 1:4, sep=".")
mat.1

r语言三角矩阵,【R基础知识】,r语言,矩阵,开发语言

数据维度与矩阵长宽置换

# 查看数据的维度
dim(mat.1) # 表示这是一个4行4列的矩阵
mat.2 <- matrix(51:66, nrow = 4)
mat.2

# 矩阵长宽转置,等同于excel的数据矩阵转置
t(mat.2)
mat.2

r语言三角矩阵,【R基础知识】,r语言,矩阵,开发语言

两个矩阵的计算

# 两个矩阵一一对应相加
mat.plus <- mat.1 + mat.2
mat.plus

# 两个矩阵一一对应相减
mat.minus <- mat.1 - mat.2
mat.minus

# 若A矩阵的维度为m*n,那么B矩阵的维度应为n*p
# 生成的结果矩阵的维度为m*p
mat.3 <- matrix(1:8, nrow = 4)
mat.3
dim(mat.3) # 4*2
dim(mat.1) # 4*4

# 矩阵相乘
mat.mcl <- mat.1 %*% mat.3
mat.mcl
dim(mat.mcl)

r语言三角矩阵,【R基础知识】,r语言,矩阵,开发语言

将全矩阵转换成上三角或者下三角矩阵

# 提取矩阵对角线数据
diag(mat.1)

# 生成上三角矩阵,注意这里的diag参数如果为TRUE,
# 表示把矩阵对角也包括进来。设置为FALSE就是不包括。
mat.1[!upper.tri(mat.1, diag = TRUE)] <- 0
mat.1

# 生成下三角矩阵
mat.1[!lower.tri(mat.1, diag = TRUE)] <- 0
mat.1

r语言三角矩阵,【R基础知识】,r语言,矩阵,开发语言
温馨提醒:

  1. paste函数是一个很常用的函数,主要用于命名,尤其是在写循环的时候这个函数更为常见。今天主要与大家分享他简单的功能,paste(“名称”, 1:N, sep=“x”),该语法表示,要对某个名称生成1到N的数量并以某个x字符隔开名称和数字。
  2. matrix函数主要用于生成数据矩阵,也是一个比较常用的函数,通常在编写函数时都会先用构建的数据。
  3. t函数更是一个常用的函数,通常我们拿到的数据是多种多样的,有时候和自己预期的数据格式不对。比如:行列的置换,与excel中的置换相同,但是需要注意的是,t函数在转换的时候可能会改变数据结构。在置换数据的时候可以这么写,as.data.frame(t(data))。
  4. diag函数是一个处理矩阵对角线的函数,在微生物生态领域,通常计算完betaNTI的时候,拿到的数据是一个完整的矩阵,我们通常在画图时只需要上三角或者下三角,然后可以再利用melt函数将宽数据处理成长数据,去除含0的值就可以了。
library(reshape2)
data_m <- melt (mat.1)
head(data_m)
data_m_f <- data_m %>% filter (value != 0)
data_m_f

r语言三角矩阵,【R基础知识】,r语言,矩阵,开发语言文章来源地址https://www.toymoban.com/news/detail-704599.html

到了这里,关于入门必学 | R语言将全矩阵转化为上三角或下三角矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用R语言将矩阵数据转化为数据框(dataframe)

    使用R语言将矩阵数据转化为数据框(dataframe) 在R语言中,数据框(dataframe)是一种常用的数据结构,它类似于表格,可以存储不同类型的数据,并且每一列的数据类型可以不同。如果我们有一个矩阵数据,并且想要将其转化为数据框,可以使用 as.data.frame() 函数来实现这个

    2024年02月07日
    浏览(43)
  • C语言二维数组中:主次对角线求和,上下三角求和,杨辉三角,矩阵转置

     p8 有些的结论需要直接记住 目录 矩阵转置  主对角线和次对角线 下三角 和上三角(一般是让求和) 下三角  上三角 杨辉三角 不是方阵 需要用到第二个二维数组  b[i][j]=a[i][j] 是方阵     方法1 借助第二个二维数组,同上 方法2    下三角换即可(是方阵的话一般题目都

    2024年01月22日
    浏览(52)
  • 【视觉SLAM入门】5.1. 特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

    为什么重要?我们是在做什么事? 特征提取和匹配: 首先是两幅图像的特征提取,然后是对应特征点的匹配。接下来的工作是根据得到的匹配点对,估计相机的运动,具体根据相机分为三种方法: 单目相机:2D-2D: 对极几何 方法 双目或者RGBD相机: 3D-3D: ICP 方法 一个3D点

    2024年02月13日
    浏览(42)
  • R语言中使用as.data.frame函数将矩阵数据转化为dataframe数据

    R语言中使用as.data.frame函数将矩阵数据转化为dataframe数据 在R语言中,我们经常需要处理和分析不同类型的数据。矩阵是一种常见的数据结构,而dataframe则是更灵活和功能更丰富的数据结构。如果我们有一个矩阵数据,需要将其转化为dataframe数据以便进行更多的数据操作和分析

    2024年02月07日
    浏览(35)
  • 【视觉SLAM入门】5.1. (基于特征点的视觉里程计)特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

    为什么重要?我们是在做什么事? 特征提取和匹配: 首先是两幅图像的特征提取,然后是对应特征点的匹配。接下来的工作是根据得到的匹配点对,估计相机的运动,具体根据相机分为三种方法: 单目相机:2D-2D: 对极几何 方法 双目或者RGBD相机: 3D-3D: ICP 方法 一个3D点

    2024年02月10日
    浏览(37)
  • 【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)

    目录 前言 六、批量数据组织——数组 6.1 成绩统计——数组类型 6.1.1 数组类型 6.1.2 数组声明与操作 6.1.3 成绩统计 6.2 统计多科成绩——多维数组 6.3 程序设计实例 6.3.1 杨辉三角形 6.3.2 矩阵乘积 6.3.3 消去法 6.4 线性表——分类与检索 ChatGPT         C语言是一种通用的、过

    2024年02月07日
    浏览(56)
  • c++入门必学算法 快速幂

    快速幂算法是用来快速计算指数表达式的值的,例如 2 10000000 ,普通的计算方法 2*2*2*2…乘10000000次,如果一个数字的计算都要计算那么多次的话,那么这个程序一定是失败的。 学完快速幂之后就可以用几十次计算求出答案了 快速幂思想其实很简单,就是公式的转换 1、当指数

    2024年02月12日
    浏览(40)
  • c++入门必学算法 质数筛

    质数筛也叫素数筛,是求1到n之内素数的优化算法,质数筛有两种,埃氏筛和欧拉筛。 埃氏筛的时间复杂度接近O(n*logn),而欧拉筛可以把复杂度降低到O(n),下面看两种算法的到底是如何一步步优化的吧 暴力法求解复杂度O(n)* n sqrt{n} n ​ ,是新手必学的算法,能解决小数据的

    2023年04月21日
    浏览(31)
  • c++入门必学库函数 memset

    memset是c语言的string.h里的字符串初始化函数,但是也经常用于普通数组的初始化,它的优点就是简单易用,一行代码就可以初始化数据了,当然这完全可以用for循环赋值代替的。 函数模板: memset(数组首地址,初始值,初始化大小) 数组首地址 :数组的首地址是可以直接用数

    2024年02月07日
    浏览(31)
  • 快速认识,前端必学编程语言:JavaScript

    JavaScript是构建Web应用必学的一门编程语言,也是最受开发者欢迎的热门语言之一。所以,如果您还不知道JavaScript的用处、特点的话,赶紧补充一下这块基础知识。 JavaScript 是一种高级、单线程、垃圾收集、解释或即时编译、基于原型、多范式、动态语言,具有非阻塞事件循

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包