如何在 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

相关文章