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