在本教程中,您将探索 R 中的矩阵。您将学习如何创建矩阵,创建矩阵有不同的方法,您可以学习并选择最适合您需求的方法来创建矩阵。此外,还将介绍如何命名矩阵的行和列、检查矩阵是否存在、选择、修改和删除矩阵中的元素。
矩阵就像向量的兄弟。您知道向量是一个具有数据元素序列的一维数据结构,而矩阵也是类似的数据元素集合,但不同之处在于元素被排列成固定数量的行和列。由于矩阵数据元素是按行和列排列的,因此它们被称为二维的。
| 向量 -> 1D | 矩阵 -> 2D |
|---|---|
|
创建一个向量 > |
创建一个矩阵 > |
|
输出 [1] 3 5 4 8 |
输出 [,1] [,2] |
![]() |
![]() |
注意:不必在意语法,只需理解概念即可。
矩阵是一个二维数组(2D),有行和列,其中矩阵包含相似基本数据类型的元素,如数字、字符、逻辑值等。
下面是一个 2 行 2 列的矩阵示例。

在 R 中,使用 matrix() 函数创建矩阵。
创建矩阵的基本语法 1 是使用 matrix() 函数,并在括号内传递数据、行数、列数等参数。
matrix(data,nrow,ncol) #Syntax 1
其中 matrix() 内部的参数是
> MATRIX <- matrix(1:15, nrow=3, ncol=5)
> MATRIX
输出
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15
matrix(data, nrow, ncol, byrow =TRUE) #Syntax 2
其中 byrow = TRUE 表示按行分布元素。
> MATRIX <- matrix(1:15, nrow=3, ncol=5,byrow =TRUE)
> MATRIX
输出
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15

语法 1 默认按列排列数据,而在语法 2 中,我们传递了参数 byrow = TRUE,它将矩阵内相同的数据按行排列。
在语法 1 中,数字 1 2 3 4 5 是按列排列的,而在语法 2 中,通过在创建矩阵时使用 byrow = TRUE,相同的数据(数字)被按行排列。
注意:默认情况下,矩阵是按列创建数据的,此时 byrow=FALSE。您可以指定 byrow=FALSE,否则它默认采用按列排列数据的方式。
在 R 语言中,提供了一个内置函数 rbind(),通过按行填充数据或元素来创建矩阵。在 R 编程中,rbind 代表行绑定(row binding)。
rbind(data)
示例:matrix<- rbind(Item_NO,Item_name)
// Place code hereItem_NO <- c(1:4)
Item_name<-c("MILK","CHEESE","BUTTER","CURD")
matrix<- rbind(Item_NO,Item_name)
print(matrix)
上述代码产生的输出
NO "1" "2" "3" "4" Item_name "MILK" "CHEESE" "BUTTER" "CURD"
您可以从输出中推断出,数据集是沿行分布的。
在 R 语言中,提供了一个内置函数 cbind(),通过按列填充数据或元素来创建矩阵。在 R 编程中,cbind 代表列绑定(column binding)。
cbind(data)
示例 : matrix<- cbind(Item_NO,Item_name)
让我们看一个代码
Item_NO <- c(1:4)
Item_name<-c("MILK","CHEESE","BUTTER","CURD")
matrix<- cbind(Item_NO,Item_name)
print(matrix)
输出
Item_NO Item_name
[1,] "1" "MILK"
[2,] "2" "CHEESE"
[3,] "3" "BUTTER"
[4,] "4" "CURD"
您可以从输出中推断出,数据显示为按列排列,其中 Item_NO 与每个 Item_name 对应地按列排列。
注意在 rbind() 和 cbind() 中,我们都可以有 deparse.level。deparse.level 可以设置为 0 或 1,用于为矩阵构造标签。
考虑下表,以更好地推断 rbind() 在不同 deparse.level 值下的输出。
| 函数 | 代码 | 输出 |
|---|---|---|
| rbind() |
matrix<- rbind(Item_NO,Item_name,deparse.level = 0)
matrix<- rbind(Item_NO,tem_name,deparse.level = 1) |
[,1] [,2] [,3] [,4] [,1] [,2] [,3] [,4] |
| cbind() |
matrix<- cbind(Item_NO, item_name,deparse.level = 0)
matrix<- cbind(Item_NO,Item_name, deparse.level = 1) |
[,1] [,2] Item_NO Item_name
|
注意:cbind() 和 rbind() 都是 R 中的内置函数,用于通过组合几个相同长度的向量来创建矩阵。
deparse.level 的值 0 或 1 决定了要构造的标签(cbind 的列标签或 rbind 的行标签)。
度量指的是创建矩阵时使用的标准。使用创建矩阵的语法,创建了一个矩阵 m。
m <- matrix(1:15,
nrow=5,
ncol=3,
byrow=FALSE)
以下是矩阵的度量
矩阵 m 是
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
下面显示了矩阵函数的示例
nrow(m)
ncol(m)
dim(m)
它产生一个输出
> print(nrow(m)) [1] 5 > print(ncol(m)) [1] 3 > print(dim(m)) [1] 5 3
考虑上面使用 matrix() 函数创建的矩阵,让我们使用以下语法为该矩阵的行和列命名
命名矩阵的行
rownames(<MATRIX>) = c(<name1>,<name2>………)
示例:rownames(MATRIX) =c("row_1","row_2","row_3")
命名矩阵的列
colnames(<MATRIX>)=c(<name1>,<name2>…….)
示例:colnames(MATRIX)=c("col_1","col_2","col_3","col_4","col_5")
让我们看一个简单的程序来理解矩阵行和列的命名
#created a matrix named MATRIX
#MATRIX is 3 by 5 with data distributed row wise
MATRIX <- matrix(1:15, nrow=3, ncol=5,byrow =TRUE)
#create names to rows
rownames(MATRIX)=c("row_1","row_2","row_3")
#create names to columns
colnames(MATRIX)=c("col_1","col_2","col_3","col_4","col_5")
cat("The MATRIX after naming is \n")
print(MATRIX)
输出
The MATRIX after naming is
col_1 col_2 col_3 col_4 col_5
row_1 1 2 3 4 5
row_2 6 7 8 9 10
row_3 11 12 13 14 15
让我们看看这些代码在 RStudio 中的样子

在 R 中,您可以使用 dimnames() 函数来命名矩阵的行和列。它是 R 中一个内置函数,用于设置行和列的值,以及获取行和列的名称。
dimnames() <- list(c(), c())
首先使用 matrix() 函数创建一个矩阵
m <- matrix(1:15,
nrow=5,
ncol=3,
byrow=FALSE)