在R语言中,矩阵(Matrix)是一个二维的数据结构,包含相同数据类型的元素。3×3数值矩阵如图3-5所示。
图3-5 3×3数值矩阵
创建矩阵使用matrix()函数,该函数的语法如下。
参数说明如下。
vector:具有相同数据类型的数据项。
nrow:行数。
ncol:列数。
byrow(可选):在创建矩阵时,用于控制数据按行或列的顺序填充矩阵。这个参数的取值可以是TRUE或FALSE,它影响矩阵的填充方式。
(1)当byrow=TRUE时,数据将按行的顺序填充矩阵。这意味着从左到右填充一行,然后移到下一行,依次类推。这种方式在某些情况下更符合直觉,特别是有一串数据,我们希望将其按行分组成矩阵时。
(2)当byrow=FALSE时,数据将按列的顺序填充矩阵。这意味着从上到下填充一列,然后移到下一列,依次类推。这是默认的填充方式。
创建矩阵的示例代码如下。
上述示例代码解释如下。
代码第①行创建了一个3×3的矩阵mat1,并按行填充(因为byrow=TRUE)。数据由c(2, 3, 5, 7, 18, 19, 1, 3, 5)向量提供,按照行优先的方式填充。矩阵的内容如下。
代码第②行创建了一个2×3的矩阵mat2,默认情况下按列填充(因为没有指定byrow参数,它默认为FALSE)。数据由1到6的整数提供,按列填充,矩阵的内容如下。
访问矩阵中的元素是在R语言中进行矩阵操作的基本操作之一。我们可以使用方括号 [行,列]来访问矩阵中的特定元素。以下是展示在R语言中访问矩阵中的元素的示例代码。
上述示例代码解释如下。
上述代码创建了一个2×3矩阵mat。2×3矩阵如图3-6所示。
代码第①行使用向量索引访问多个元素,获取单个元素值,元素值是3。使用向量索引访问多个元素如图3-7所示。
代码第②行获取整个第一行数据。访问第一行数据如图3-8所示。
代码第③行获取整个第二列数据。访问第二行数据如图3-9所示。
代码第④使用向量索引访问多个元素。使用向量索引访问多个元素如图3-10所示。
代码第⑤使用逻辑条件访问元素。使用逻辑条件访问元素如图3-11所示。
图3-6 2×3矩阵
图3-7 使用向量索引访问单个元素
图3-8 访问第一行数据
图3-9 访问第二列数据
图3-10 使用向量索引访问多个元素
图3-11 使用逻辑条件访问元素
上述示例代码运行结果如下。
在R语言中,矩阵的一些属性可用于描述和操作矩阵的特征和结构。以下是一些常见的矩阵属性。
(1)维度:是矩阵最基本的属性,它确定了矩阵的行数和列数。我们可以使用dim()函数获取矩阵的维度。
(2)长度:表示矩阵中元素的数量。我们可以使用 length() 函数来获取向量的长度。
(3)矩阵行数:使用nrow()函数来获取矩阵的行数。该函数返回矩阵中的行数作为结果。
(4)矩阵的列数:使用ncol()函数来获取矩阵的列数。该函数返回矩阵中的列数作为结果。
(5)存储模式(Storage Mode):表示矩阵中元素的数据类型,通常是integer、numeric、character等。我们可以使用mode()函数来获取存储模式。
示例代码如下。
上述示例代码运行结果如下。
矩阵转置是一种常见的矩阵操作,它可以通过改变矩阵的行和列的位置来创建新的矩阵。在R语言中,我们可以使用t()函数来获取矩阵的转置,转置后的矩阵的行数和列数将交换。例如,如果原始矩阵mat是一个2×3矩阵,那么其转置矩阵将成为一个3×2矩阵。
请注意,矩阵转置只是返回一个新的矩阵,而不会改变原始矩阵。
以下是关于矩阵转置的示例代码。
在这个示例中,transposed_mat将包含mat的转置矩阵。
上述示例代码运行结果如下。