R 编程中的矩阵


2022年2月12日, Learn eTutorial
2369

在本教程中,您将探索 R 中的矩阵。您将学习如何创建矩阵,创建矩阵有不同的方法,您可以学习并选择最适合您需求的方法来创建矩阵。此外,还将介绍如何命名矩阵的行和列、检查矩阵是否存在、选择、修改和删除矩阵中的元素。

R 中的矩阵是什么?

矩阵就像向量的兄弟。您知道向量是一个具有数据元素序列的一维数据结构,而矩阵也是类似的数据元素集合,但不同之处在于元素被排列成固定数量的行和列。由于矩阵数据元素是按行和列排列的,因此它们被称为二维的。

向量 -> 1D 矩阵  ->  2D

创建一个向量

> Vector<- c(3,5,4,8)
 

创建一个矩阵

> Matrix <-matrix(c(3,5,4,8),nrow =2,ncol=2)
 

输出

[1] 3 5 4 8
 

输出

         [,1] [,2]
[1,]    3    4
[2,]    5    8
 

Matrix in R Matrix in R

注意:不必在意语法,只需理解概念即可。

矩阵是一个二维数组(2D),有行和列,其中矩阵包含相似基本数据类型的元素,如数字、字符、逻辑值等。

下面是一个 2 行 2 列的矩阵示例。

Matrix in R

如何在 R 中创建一个矩阵?

在 R 中,使用 matrix() 函数创建矩阵。

创建矩阵的基本语法 1 是使用 matrix() 函数,并在括号内传递数据、行数、列数等参数。


matrix(data,nrow,ncol)         #Syntax 1
 

其中 matrix() 内部的参数是

  • data  = 矩阵内部的元素(按列分布)
  • nrow = 行数
  • ncol = 列数

一个使用语法 1 创建矩阵的简单程序


> 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 表示按行分布元素。

使用语法 2 创建的一个简单矩阵


> 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

Matrix in R

语法 1 默认按列排列数据,而在语法 2 中,我们传递了参数 byrow = TRUE,它将矩阵内相同的数据按行排列。

在语法 1 中,数字 1 2 3 4 5 是按列排列的,而在语法 2 中,通过在创建矩阵时使用 byrow = TRUE,相同的数据(数字)被按行排列。

注意:默认情况下,矩阵是按列创建数据的,此时 byrow=FALSE。您可以指定 byrow=FALSE,否则它默认采用按列排列数据的方式。

如何在 R 中按行填充元素来创建一个矩阵?

在 R 语言中,提供了一个内置函数 rbind(),通过按行填充数据或元素来创建矩阵。在 R 编程中,rbind 代表行绑定(row binding)。


rbind(data)
 

示例:matrix<- rbind(Item_NO,Item_name)

R 编程中 rbind() 函数的工作原理


// 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 中按列填充元素来创建一个矩阵?

在 R 语言中,提供了一个内置函数 cbind(),通过按列填充数据或元素来创建矩阵。在 R 编程中,cbind 代表列绑定(column binding)。


cbind(data)
 

示例 : matrix<- cbind(Item_NO,Item_name)

让我们看一个代码

R 编程中 cbind() 函数的工作原理


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.leveldeparse.level 可以设置为 0 或 1,用于为矩阵构造标签。

考虑下表,以更好地推断 rbind() 在不同 deparse.level 值下的输出。

R 编程中的 rbind 和 cbind

函数 代码 输出
rbind()

matrix<- rbind(Item_NO,Item_name,deparse.level = 0)
 

 

matrix<- rbind(Item_NO,tem_name,deparse.level = 1)

[,1]   [,2]     [,3]     [,4]  
[1,] "1"    "2"      "3"      "4"   
[2,] "MILK" "CHEESE" "BUTTER" "CURD"
 

                    [,1]   [,2]     [,3]     [,4]  
Item_NO   "1"    "2"      "3"      "4"   
Item_name "MILK" "CHEESE" "BUTTER" "CURD"
 

cbind()

matrix<- cbind(Item_NO, item_name,deparse.level = 0)

 

 

matrix<- cbind(Item_NO,Item_name, deparse.level = 1)
 

        [,1] [,2]    
[1,] "1"  "MILK"  
[2,] "2"  "CHEESE"
[3,] "3"  "BUTTER"
[4,] "4"  "CURD"  

    Item_NO Item_name
[1,] "1"     "MILK"   
[2,] "2"     "CHEESE" 
[3,] "3"     "BUTTER" 
[4,] "4"     "CURD"   
 

 

注意cbind()rbind() 都是 R 中的内置函数,用于通过组合几个相同长度的向量来创建矩阵。

deparse.level 的值 0 或 1 决定了要构造的标签(cbind 的列标签或 rbind 的行标签)。

R 中矩阵的度量是什么?

度量指的是创建矩阵时使用的标准。使用创建矩阵的语法,创建了一个矩阵 m。


m <- matrix(1:15, 
            nrow=5,
            ncol=3,
            byrow=FALSE)
 

以下是矩阵的度量

  • data  例如向量
  • nrow 代表行数
  • ncol 代表列数

矩阵 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

如何在 R 中命名矩阵的行和列?

考虑上面使用 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 中的样子

Program to name rows and columns of the matrix

R 中的 dimnames() 是什么?

在 R 中,您可以使用 dimnames() 函数来命名矩阵的行和列。它是 R 中一个内置函数,用于设置行和列的值,以及获取行和列的名称。


dimnames() <- list(c(), c())
 

首先使用 matrix() 函数创建一个矩阵


m <- matrix(1:15, 
             nrow=5,
             ncol=3,
             byrow=FALSE)