R语言 | 处理矩阵与更高维数据

news2024/11/29 12:32:45

目录

一、矩阵

1.1 建立矩阵

​1.2 认识矩阵的属性

1.3 将向量组成矩阵

二、取得矩阵元素的值

2.1 矩阵元素的取得

2.2 使用负索引取得矩阵元素

 三、修改矩阵的元素值

 四、降低矩阵的维度

 五、矩阵的行名和列名

5.1 取得和修改矩阵对象的行名和列名

5.2 dimnames()函数

六、将行名或列名作为索引

七、矩阵的运算

7.1 矩阵与一般常数的四则运算

7.2 行和列的计算

7.3 转置矩阵

7.4 %*%矩阵相乘

7.5 diag()函数

7.6 solve()函数

7.7 det()函数

八、三维或高维数组

8.1建立三维数组

 8.2 idential()函数

8.3 取得三维数组的元素

九、再谈class()函数


一、矩阵

1.1 建立矩阵

建立矩阵可使用matrix()函数,格式如下:

matrix(data,nrow=,ncol=,byrow=logical,dimnames=NULL)

data:数据。

nrow:预计行的数量。

ncol:预计列的数量。

byrow:逻辑值,预设是FALSE,表示先按列填数据,第1列填满再填第2列,其他依此类推,因此,若先先列则可省略此参数。如果该值是TRUE则按行填数据,即第1行填满再填第2行,其他依此类推。

dimnames:矩阵的属性,即行名和列名。

 1.2 认识矩阵的属性

str()函数可以查看矩阵对象的结构。

使用nrow()函数可以得到矩阵的行数。

使用ncol()函数可以得到矩阵的列数。

使用dim()函数可以得到矩阵对象的行数和列数。

此外,length()函数也可以用于取得矩阵或三维数组或多维数组对象的元素个数。

is.matrix()函数而可用于检查对象是否是矩阵。

is.array()函数可用于检查对象是都是数组。

1.3 将向量组成矩阵

R语言提供的rbind()函数可将两个或多个向量组成矩阵,每个向量各自占用一行

cbind()函数可将两个或多个向量组成矩阵,功能类似于rbind()。不过,它是以每个向量各占一列的方式来组织向量的。

二、取得矩阵元素的值

2.1 矩阵元素的取得

当某一索引被省略时,则代表该维度的行或列均必须被计算在内。

 

2.2 使用负索引取得矩阵元素

对于矩阵,使用负索引,相当于拿掉负索引所指的行或列。

 三、修改矩阵的元素值

 

 四、降低矩阵的维度

使用负索引取得矩阵的部分元素时,如果所取得的部分元素仅有一行或一列,那么R语言将自动降低对象维度,使其从矩阵对象变向量对象。

其实,如果舍弃一个矩阵对象的某个元素,那么整个矩阵对象也将降为向量对象。

假设有数行或数列的矩阵,其部分元素被舍弃,只剩一行或一列时,如果仍希望此对象以矩阵方式呈现,可增加“drop=FALSE"参数。

 五、矩阵的行名和列名

下面的矩阵没有行名和列名。

5.1 取得和修改矩阵对象的行名和列名

rownames()函数可以取得和修改矩阵对象的行名。

colnames()函数可以取得和修改矩阵对象的列名。

如果我们想要把整个列名或行名删除,那么只要将整个列名或行名设为NULL即可。

 

 5.2 dimnames()函数

行名和列名事实上是存在于dimnames的属性种,去哦们可以使用dimnames()函数取得和修改这个属性值。

六、将行名或列名作为索引

R语言的重要特色是,当一个矩阵有了行名和列名后,可以用这些名称来代替数字型的索引,取得矩阵对象的元素,让整个程序的可读性更高。

 

七、矩阵的运算

7.1 矩阵与一般常数的四则运算

当碰上矩阵对象与一般常数的运算时,只要将各个元素与该常数分别执行运算即可。

两个矩阵能进行四则运算的先决条件是它们彼此的维度相同,否则会出现错误信息。有意思的是,R语言是允许矩阵对象和向量对象相加的,只要矩阵的行数与向量长度相同即可。 

 

 如果矩阵的列数与向量长度相同,也可以进行加法运算,但一般不常用。

注:

"\times "乘号是对单一元素逐步操作的,如果是要计算矩阵的内积,则需使用另一个特殊的矩阵相乘符号"%\times %"

7.2 行和列的计算

rowSums():计算行种元素的总和。

colSums():计算列种元素的总和。

rowMeans():计算行中元素的平均值。

colMeans():计算列中元素的平均值。

 

7.3 转置矩阵

t()函数可执行矩阵转置,转置矩阵后,矩阵的行列元素将互相对调。

7.4 %*%矩阵相乘

矩阵对象相乘的运算基本上和数学矩阵相乘是一样的。

 

7.5 diag()函数

diag()函数很灵活,当第一个参数是矩阵时,可传回对角线的向量值。

diag()函数的另一个用法是传回矩阵,此矩阵对角线是使用第一个参数的向量值,其余填0。该命令格式如下所示。

diag(x,nrow,ncol)

其中x是向量,nrow是矩阵行数,ncol是矩阵列数。若省略nrow和ncol,则用x向量元素个数(假设是n)建立n行n列矩阵。

7.6 solve()函数

使用solve()这个函数可传回反矩阵,使用这个函数时要小心,有时会碰上小数被舍弃的问题。

 

7.7 det()函数

det是指数学中的行列式,这个函数可以计算矩阵的行列式值。

 

八、三维或高维数组

8.1建立三维数组

array()函数可用于建立三维数组。

我们也可以使用dim()函数建立三维数组,方法是将一个向量,利用dim()函数转成三维数组

 

 8.2 idential()函数

identical()函数主要用于比较两个对象是否完全相同。

 8.3 取得三维数组的元素

由上述结果可以发现,初始first.3array为数组对象,经筛选后,变成矩阵。如果期待筛选完,对象仍是三维数组,那么可加上参数“drop=FALSE"。

 

 降维后,第1个表格的数据以列优先方式先填充,第2个表格再依次填充。

九、再谈class()函数

 

 如果class()函数放入的参数是变量(例如矩阵)的特定元素,则将显示该元素的数据类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL自学之路】第4天——模式、表、视图、索引(数据定义详细版)

目录 前言 数据库 数据库的建立 数据库的使用 数据库的查看 数据库的删除 模式 查看所有的模式 模式和数据库之间的关系 ​编辑建立模式 删除模式 表 数据类型 查看一个数据库下面的所有表(必须进入要查看的数据库) 创建基本表 查看表结构(查看表建…

EU GMP附录一与关键区域空气微生物取样方案及相关法规标准解读

2022版EU GMP附录一与关键区域空气微生物取样方案疑问解答 3月30日2022版EU GMP附录一与关键区域空气微生物取样方案网络研讨会期间,我们收集到了部分参会听众针对该主题所提出的常见问题。根据以下这些问题,lighthouse微生物应用专家将来为您答疑解惑。…

多功能自动化智能运维平台,提升集群的全自动运维效率

一、开源项目简介 致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 探索创新的sysAK、ossre诊断工具及高效的LCC(Libbpf Compiler Collection)开发编译平台和netinfo网络抖动问题监控系统等&#xff…

放射学中的自然语言处理技术综述

放射学中的自然语言处理技术综述 写在最前面预览CLINICAL APPLICATIONS Automatic Protocoling 临床应用程序自动协议Extraction of Language Features, Patient Cohorting, and Coded Ontology from Charts 从图表中提取语言特征、患者队列和编码本体Medical Imaging Appropri…

vulnhub靶场之bluemoon

1.信息收集 存活主机进行探测,发现主机192.168.239.176存活。 对主机192.168.239.176进行端口扫描,发现21、22、80端口 访问http://192.168.239.176,并查看源码未发现可利用的行为。 进行目录扫描发现可疑路径/hidden_text 浏览器访问h…

Python的经典结构算法

学会了 Python 基础知识,想进阶一下,那就来点算法吧!毕竟编程语言只是工具,结构算法才是灵魂。 那新手如何入门 Python 算法呢? 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&…

SQL server 数据库同步(发布与订阅)【解决办法】

SQL server 数据库同步(发布与订阅)【解决办法】 一、本地防火墙放通二、创建共享文件夹2.1 在发布服务器上创建共享文件夹,该文件夹用于提供数据库信息同步的媒介2.2 设置共享权限,添加所有人,权限为读取 三、发布服务…

NetMQ | 发布订阅时使用含通配符的Topic

NetMQ | 发布订阅时使用含通配符的Topic 文章目录 NetMQ | 发布订阅时使用含通配符的Topic前言通配符如何使用通配符通配符的作用结束语 前言 今天我来介绍一下NetMQ发布订阅时如何使用含通配符的Topic,让我们能够更加灵活地订阅消息。 什么是Topic? 在NetMQ中&am…

这一次,让Kotlin Flow 操作符真正好用起来

前言 Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符,巧妙使用Flow操作符可以大大简化我们的程序结构,提升可读性与可维护性。 然而,虽然好用,但有些操作符不太好理解,可惜的是网上大部分文章只是简单介绍其…

1970-01-01是什么?为什么计算机起始时间是1970年1月1日

我们是不是也曾见到过或者听说过1970-01-01,而且它好像常常存在于计算机行业,非常常见,从事IT行业的兄弟应该都接触过,那么到底为什么是1970-01-01,而不是其他呢? 其实,1970-01-01对于开发者来说都是不陌生…

带你了解现在的LED显示屏技术

随着LED显示屏技术的空前繁荣,LED显示屏产品备受关注,广泛应用于商业广告、实况播映、交通诱导、舞台演绎等领域,发展至今。你了解十大中国LED显示屏制造商吗? LED显示屏技术已经得到了长足的发展,现在的LED显示屏技术…

智融合·共未来丨智合同携手百融云创打造合同智能化应用服务平台

人工智能技术是当今社会的热议话题之一。近年来,众多企业在人工智能领域持续布局,相关技术已在社会生产各环节极大地提高了生产效率。如果把过去信息技术产业的发展比喻为“手工时代”,那么人工智能技术的出现则将把信息技术产业推向“自动化…

数据库迁移 | DBMotion v23.04 支持异地多活

Squids DBMotion新版本支持异地多中心双活同步了。异地多活支持业务在多个数据中心同时操作数据库,能极大地提升高可用性、容错性和用户体验。其中最关键的技术,无疑是数据同步、同步防环和数据冲突解决。Squids DBMotion通过复制数据打标和预置冲突策略…

生产凭证补传操作步骤

凭证包文件包含:身份证正面、身份证背面、拍照图片、身份证头像图片、联网核查文件、签名文件、签名轨迹文本、凭证json文件。 一、证件信息重复或者模糊。 1.提供业务流水号、证件信息。 2.将证件信息通过安全U盘导入生产机。 3.根据业务流水号前8位设备号及业务流…

电信及互联网行业数据安全内控审计建设实践 | 盾见

文|龚磊 伴随数据安全“五法一典”出齐,2021年成为我国数据安全元年。各地、各行业不断加快数据安全政策体系的完善与落地执行。政企机构不断强化数据安全建设,共同助力网络安全行业高景气度维系。 2021年6月,网络安全等保测评报告模板新版发…

计算机网络学习02

1、TCP 与 UDP 的区别? 是否面向连接 : UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。是否是可靠传输: 远地主机在收到 UDP 报文后&…

《2023中国企业数智化转型升级服务全景图/产业图谱1.0版》重磅发布

‍ 数据猿出品 本次“数据猿2023年度三大媒体策划活动——《2023企业数智化转型升级服务全景图/产业图谱1.0版》”的发布,是数据猿在2022年3.0版本的基础上,迭代升级的2023开年的第一个版本。本年度下一次版本迭代将于2023年8月底发布2023年2.0版&#x…

Java学习18(Java内存区域详解)

对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一…

前端web3入门脚本二:初探dex,在dex完成一笔swap

前言 现在市面上大多数去中心化交易所(简称dex)都是fork的uniswap的代码,名气比较大的如eth上的sushi 以及 bsc上的pancake。博主这里说的都是V2,uniswapV3在这里不做讨论。那么知道了他们的代码都是来自同一父亲之后,…

Python每日一练(20230428)

目录 1. 最长有效括号 🌟🌟🌟 2. 矩阵中的最长递增路径 🌟🌟🌟 3. 回文链表 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…