当前位置: 首页 > news >正文

R语言的数据结构-矩阵

【图书推荐】《R语言医学数据分析实践》-CSDN博客

《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com)

R语言医学数据分析实践-R语言的数据结构-CSDN博客

矩阵是一个二维数组,矩阵中的元素都具有相同的类型(数值型、字符型或逻辑型)。矩阵是一种特殊的向量,包含两个附加的属性:行数和列数。矩阵中每一行代表一条记录,而每一列代表一个属性。在医学应用中,矩阵广泛用于存储和处理医学数据,如实验数据、影像数据、生物标记物数据等。矩阵用matrix函数定义,根据保存的行数和列数对应到矩阵的元素,定义的格式如下:

matrix(data  #要创建矩阵的数据,一般为向量nrow  #行数ncol  #列数byrow = TRUE  	#若为TRUE,则按行填充矩阵;若为FALSE,则按列填充矩阵dimnames  		#用于指定行和列的名称,默认为NULL
)

matrix()函数把矩阵元素以一个向量的形式输入,用nrow和ncol规定行数和列数。默认情况下,向量元素填入矩阵的默认次序是按列填入。使用参数byrow=TRUE可以转换成按行填入。dimnames函数的第一个向量为行名,第二个向量为列名。

创建矩阵的R代码如下:

patient_height <- c(165, 172, 180)  	#创建身高向量
patient_weight <- c(60, 70, 75)     	#创建体重向量
patient_matrix <- matrix(c(patient_height, patient_weight), nrow = 3, ncol = 2, byrow = TRUE, dimnames = list(c("Patient1", "Patient2", "Patient3"),c("Height", "Weight"))) #创建三行二列的矩阵
patient_matrix    #查看创建的矩阵

代码运行结果如图2-3所示,成功创建了一个包含3个病人身高和体重数据的矩阵。

​图2-3

当我们完成矩阵的创建后,如何查看矩阵的属性呢?可以使用class()函数查看数据结果类型,使用typeof()函数查看数据元素类型。矩阵有一个dim属性,内容是一个包含两个元素的向量,分别为矩阵的行数和列数。dim属性可以使用dim()函数访问,而查看数据元素个数则使用length()函数。

除了查看矩阵的属性之外,还可以对矩阵的元素进行修改。访问矩阵元素有两种方式:按索引访问和按名称访问。按索引访问需提供行和列对应的索引,以获取对应位置元素的值。比如想查看第二列第二行的内容,可以使用“patient_matrix[2,2]”来获得。此外,还能通过名称访问,比如“patient_matrix["Patient2","Weight"]”,这将得到相同的结果。

查看矩阵属性和修改矩阵元素的R代码如下:

class(patient_matrix)   	#查看数据结果类型
typeof(patient_matrix)  	#查看数据元素类型
dim(patient_matrix)     		#查看数据维度
length(patient_matrix)  	#查看数据元素个数
patient_matrix[2,2]     		#查看第二列第二行内容
patient_matrix["Patient2","Weight"]
patient_matrix[2,2]<-65  	#修改第二列第二行内容
patient_matrix

代码运行结果如图2-4所示。

图2-4

使用colnames()函数可以给矩阵中的每列命名,使用rownames()函数可以给矩阵中的每行命名。给矩阵的行和列命名后,可以用名称代替数字索引,R代码如下:

###按数字索引访问矩阵 ###
mat_a = matrix(11:16, nrow=3, ncol=2, TRUE) #按行创建一个3×2的矩阵mat_a
print(mat_a)
###按名称访问矩阵 ###
colnames(mat_a) = c('c1', 'c2')	 		#给mat_a的每一列取名
rownames(mat_a) = c('r1', 'r2', 'r3') 	#给mat_a的每一行取名
print(mat_a)

代码运行结果如图2-5所示。

图2-5


http://www.mrgr.cn/news/79790.html

相关文章:

  • C语言学习日志 控制语句 相关 2024/12/12
  • 读书笔记:《论语别裁》前言
  • 快速掌握Quartz.Net计划任务调度框架,轻松实现定时任务
  • 手机实时提取SIM卡打电话的信令声音--社会价值(一、方案解决了什么问题)
  • 对流层路径延迟对SAR方位压缩的影响(CSDN_20240301)
  • C++中多态性在实际项目中的应用场景;C++中面向对象编程实现数据隐藏的方法
  • Vmware workstation17.6虚拟机安装Ubuntu20.04 详细 完美 操作教程(图文并茂)
  • Scala的trait
  • 【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记
  • Scala的隐式转换
  • 服务器---centos上前端从0到1配置项目部署
  • 优秀前端文章笔记----持续更新
  • Hash、HASHTABLE底层原理【Redis对象篇】
  • 杨振宁大学物理视频中黄色的字,c#写程序去掉
  • MySQL-DQL之数据多表操作
  • [Web]域对象
  • Ubuntu压缩打包解压
  • 【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)
  • 软错误防护技术在车规MCU中应用
  • PDF处理的创新工具:福昕低代码平台尝鲜实现PDF2word功能
  • Docker学习笔记
  • sheng的学习笔记-AI-序列模型(Sequence Models),RNN,GRU,LSTM
  • 力扣hot100道【贪心算法后续解题方法心得】(三)
  • Freertos任务切换
  • 为什么按需学习效率更高?
  • TCP 2