如何在 R 中随机化矩阵的行?
r programmingserver side programmingprogramming更新于 2025/6/24 8:07:17
要在 R 中随机化矩阵的行,我们可以使用 sample 函数和 nrow 函数来获取随机行,然后用单个方括号对矩阵进行子集化。
例如,假设我们有一个名为 M 的矩阵,那么可以使用以下命令随机化 M 中的行 −
Random_rows<-sample(nrow(M)) 和 M[Random_rows,]
示例 1
以下代码片段创建了一个矩阵 −
M1<-matrix(rnorm(40),ncol=2) M1
创建了以下矩阵 −
[,1] [,2] [1,] -0.1519466 2.3807947 [2,] 0.2484261 0.4204072 [3,] -0.7457339 -3.1329862 [4,] 0.7760234 -0.2282981 [5,] -0.8466272 -1.4497825 [6,] 2.3825231 -1.5571171 [7,] 0.2485765 -0.4825909 [8,] 0.6356381 -0.6498445 [9,] -0.5413304 1.1162191 [10,] -0.7497836 -0.1187549 [11,] 0.9855236 0.6309653 [12,] 0.9829068 -0.7666931 [13,] -0.2415028 0.9425981 [14,] 0.3799880 1.0948588 [15,] -1.1123904 -0.2507432 [16,] -1.6995406 0.9193191 [17,] -0.7319311 -0.4822913 [18,] -0.2378776 0.4848352 [19,] 1.1436393 0.9658798 [20,] 0.3911035 -0.2250289
要在 M1 中创建随机行向量,请将以下代码添加到上面的代码片段中 −
M1<-matrix(rnorm(40),ncol=2) Random_rows_1<-sample(nrow(M1)) Random_rows_1
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
[1] 10 20 18 19 14 16 13 1 12 9 3 6 5 11 4 17 2 15 7 8
要随机化 M1 的行,请将以下代码添加到上面的代码片段中 −
M1[Random_rows_1,]
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
[,1] [,2] [1,] -0.7497836 -0.1187549 [2,] 0.3911035 -0.2250289 [3,] -0.2378776 0.4848352 [4,] 1.1436393 0.9658798 [5,] 0.3799880 1.0948588 [6,] -1.6995406 0.9193191 [7,] -0.2415028 0.9425981 [8,] -0.1519466 2.3807947 [9,] 0.9829068 -0.7666931 [10,] -0.5413304 1.1162191 [11,] -0.7457339 -3.1329862 [12,] 2.3825231 -1.5571171 [13,] -0.8466272 -1.4497825 [14,] 0.9855236 0.6309653 [15,] 0.7760234 -0.2282981 [16,] -0.7319311 -0.4822913 [17,] 0.2484261 0.4204072 [18,] -1.1123904 -0.2507432 [19,] 0.2485765 -0.4825909 [20,] 0.6356381 -0.6498445
示例 2
以下代码片段创建了一个矩阵 −
M2<-matrix(rpois(80,5),ncol=4) M2
创建了以下矩阵 −
[,1][,2][,3][,4] [1,] 4 10 7 2 [2,] 7 5 6 2 [3,] 3 6 5 4 [4,] 5 5 4 8 [5,] 3 6 9 3 [6,] 6 5 10 9 [7,] 4 3 5 2 [8,] 5 3 9 4 [9,] 5 4 6 3 [10,] 4 1 2 3 [11,] 8 4 2 4 [12,] 3 4 3 8 [13,] 10 6 3 6 [14,] 9 8 8 2 [15,] 1 2 2 5 [16,] 3 4 5 3 [17,] 6 4 5 4 [18,] 6 2 3 5 [19,] 4 6 6 3 [20,] 6 5 4 4
要在 M2 中创建随机行向量,请将以下代码添加到上面的代码片段中 −
M2<-matrix(rpois(80,5),ncol=4) Random_rows_2<-sample(nrow(M2)) Random_rows_2
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
[1] 7 20 4 19 1 11 16 9 3 17 8 2 18 15 13 14 6 5 12 10
要随机化 M2 的行,请将以下代码添加到上面的代码片段中 −
M2[Random_rows_2,]
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
[,1][,2][,3][,4] [1,] 4 3 5 2 [2,] 6 5 4 4 [3,] 5 5 4 8 [4,] 4 6 6 3 [5,] 4 10 7 2 [6,] 8 4 2 4 [7,] 3 4 5 3 [8,] 5 4 6 3 [9,] 3 6 5 4 [10,] 6 4 5 4 [11,] 5 3 9 4 [12,] 7 5 6 2 [13,] 6 2 3 5 [14,] 1 2 2 5 [15,] 10 6 3 6 [16,] 9 8 8 2 [17,] 6 5 10 9 [18,] 3 6 9 3 [19,] 3 4 3 8 [20,] 4 1 2 3