在R中,二维矩形数据集称为矩阵。借助于矩阵函数的矢量输入来创建矩阵。在R矩阵上,我们可以执行加,减,乘和除运算。
在R矩阵中,元素以固定数量的行和列排列。矩阵元素是实数。在R中,我们使用矩阵函数,该函数可以轻松地重现矩阵的内存表示形式。在R矩阵中,所有元素必须共享一个公共的基本类型。
matrix1<-matrix(c(11, 13, 15, 12, 14, 16),nrow =2, ncol =3, byrow = TRUE) matrix1
输出
[,1] [,2] [,3] [1,] 11 13 15 [2,] 12 14 16
像vector和list一样,R提供创建矩阵的函数。 R提供了matrix()函数来创建矩阵。此函数在数据分析中起着重要作用。 R中矩阵的语法如下:
matrix(data, nrow, ncol, byrow, dim_name)
data - 矩阵函数中的第一个参数是数据。输入向量是矩阵的数据元素。
nrow - 第二个参数是我们要在矩阵中创建的行数。
ncol - 第三个参数是我们要在矩阵中创建的列数。
byrow - byrow参数是一个逻辑线索。如果其值为true,则按行排列输入向量元素。
dim_name - dim_name参数是分配给行和列的名称。
让我们看一个示例,以了解如何使用矩阵函数创建矩阵并按行或列顺序排列元素。
示例
#按行顺序排列元素。 P <- matrix(c(5:16), nrow = 4, byrow = TRUE) print(P) #按列顺序排列元素。 Q <- matrix(c(3:14), nrow = 4, byrow = FALSE) print(Q) # 定义列名和行名。 row_names = c("row1", "row2", "row3", "row4") col_names = c("col1", "col2", "col3") R <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(row_names, col_names)) print(R)
输出
[,1] [,2] [,3] [1,] 5 6 7 [2,] 8 9 10 [3,] 11 12 13 [4,] 14 15 16 [,1] [,2] [,3] [1,] 3 7 11 [2,] 4 8 12 [3,] 5 9 13 [4,] 6 10 14 col1 col2 col3 row1 3 4 5 row2 6 7 8 row3 9 10 11 row4 12 13 14
像 C 和C++一样,我们可以通过使用元素的索引轻松访问矩阵的元素。有三种方法可以从矩阵访问元素。
让我们看一个示例,以了解如何从第n行第m列,第n行或第m列上存在的矩阵访问元素。
示例
# 定义列名和行名。 row_names = c("row1", "row2", "row3", "row4") col_names = c("col1", "col2", "col3") #创建矩阵 R <- matrix(c(5:16), nrow = 4, byrow = TRUE, dimnames = list(row_names, col_names)) print(R) #访问存在于第 3 行和第 2 列的元素 print(R[3,2]) #访问第 3 行中的元素 print(R[3,]) #访问存在于第二列中的元素 print(R[,2])
输出
col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 13 row4 14 15 16 [1] 12 col1 col2 col3 11 12 13 row1 row2 row3 row4 6 9 12 15
R允许我们在矩阵中进行修改。有几种方法可以在矩阵中进行修改,如下所示:
在矩阵修改中,第一种方法是在特定位置将单个元素分配给矩阵。通过为该位置分配一个新值,旧值将被替换为新值。这种修改技术很容易执行矩阵修改。其基本语法如下:
matrix[n, m]<-y
在此,n和m分别是元素的行和列。并且,y是我们分配用来修改矩阵的值。
让我们看一个例子,以了解如何进行修改:
示例
#定义列名和行名。 row_names = c("row1", "row2", "row3", "row4") col_names = c("col1", "col2", "col3") R <- matrix(c(5:16), nrow = 4, byrow = TRUE, dimnames = list(row_names, col_names)) print(R) #将值 20 分配给 3 行和第 2 列的元素 R[3,2]<-20 print(R)
输出
col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 13 row4 14 15 16 col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 20 13 row4 14 15 16
我们使用了一些关系运算符,例如>,<,==。与第一种方法一样,第二种方法非常易于使用。让我们看一个例子,以了解此方法如何修改矩阵。
示例1
# 定义列名和行名。 row_names = c("row1", "row2", "row3", "row4") col_names = c("col1", "col2", "col3") R <- matrix(c(5:16), nrow = 4, byrow = TRUE, dimnames = list(row_names, col_names)) print(R) #替换等于 12 的元素 R[R==12]<-0 print(R)
输出
col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 13 row4 14 15 16 col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 0 13 row4 14 15 16
示例2
# 定义列名和行名。 row_names = c("row1", "row2", "row3", "row4") col_names = c("col1", "col2", "col3") R <- matrix(c(5:16), nrow = 4, byrow = TRUE, dimnames = list(row_names, col_names)) print(R) #替换值大于 12 的元素 R[R>12]<-0 print(R)
输出
col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 13 row4 14 15 16 col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 0 row4 0 0 0
矩阵修改的第三种方法是使用cbind()和rbind()函数添加行和列。 cbind()和rbind()函数分别用于添加列和行。让我们看一个例子来理解cbind()和rbind()函数的工作。
示例1
# 定义列名和行名。 row_names = c("row1", "row2", "row3", "row4") col_names = c("col1", "col2", "col3") R <- matrix(c(5:16), nrow = 4, byrow = TRUE, dimnames = list(row_names, col_names)) print(R) #添加行 rbind(R,c(17,18,19)) #添加列 cbind(R,c(17,18,19,20)) #使用 t() 函数转置矩阵: t(R) #使用 dim() 函数修改矩阵的维度 dim(R)<-c(1,12) print(R)
输出
col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 13 row4 14 15 16 col1 col2 col3 row1 5 6 7 row2 8 9 10 row3 11 12 13 row4 14 15 16 17 18 19 col1 col2 col3 row1 5 6 7 17 row2 8 9 10 18 row3 11 12 13 19 row4 14 15 16 20 row1 row2 row3 row4 col1 5 8 11 14 col2 6 9 12 15 col3 7 10 13 16 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 5 8 11 14 6 9 12 15 7 10 13 16
在R中,我们可以对矩阵执行数学运算,例如加,减,乘等。为对矩阵执行数学运算,要求两个矩阵都应具有相同的维数。
让我们看一个例子,以了解如何对矩阵执行数学运算。
示例1
R <- matrix(c(5:16), nrow = 4,ncol=3) S <- matrix(c(1:12), nrow = 4,ncol=3) #相加 sum<-R+S print(sum) #相减 sub<-R-S print(sub) #相乘 mul<-R*S print(mul) #乘以常数 mul1<-R*12 print(mul1) #相除 div<-R/S print(div)
输出
[,1] [,2] [,3] [1,] 6 14 22 [2,] 8 16 24 [3,] 10 18 26 [4,] 12 20 28 [,1] [,2] [,3] [1,] 4 4 4 [2,] 4 4 4 [3,] 4 4 4 [4,] 4 4 4 [,1] [,2] [,3] [1,] 5 45 117 [2,] 12 60 140 [3,] 21 77 165 [4,] 32 96 192 [,1] [,2] [,3] [1,] 60 108 156 [2,] 72 120 168 [3,] 84 132 180 [4,] 96 144 192 [,1] [,2] [,3] [1,] 5.000000 1.800000 1.444444 [2,] 3.000000 1.666667 1.400000 [3,] 2.333333 1.571429 1.363636 [4,] 2.000000 1.500000 1.333333
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)