How to randomize rows of a matrix in R?


To randomize rows of a matrix in R, we can use sample function along with nrow function to get the random rows and then subset the matrix with single square brackets.

For example, if we have a matrix called M then randomization of rows in M can be done by using the command given below −

Random_rows<-sample(nrow(M)) and M[Random_rows,]

Example 1

Following snippet creates a matrix −

M1<-matrix(rnorm(40),ncol=2)
M1

The following matrix is created −

        [,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

To create a vector of random rows in M1, add the following code to the above snippet −

M1<-matrix(rnorm(40),ncol=2)
Random_rows_1<-sample(nrow(M1))
Random_rows_1

Output

If you execute all the above given snippets as a single program, it generates the following output −

[1] 10 20 18 19 14 16 13 1 12 9 3 6 5 11 4 17 2 15 7 8

To randomise rows of M1, add the following code to the above snippet −

M1[Random_rows_1,]

Output

If you execute all the above given snippets as a single program, it generates the following output −

        [,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

Example 2

Following snippet creates a matrix −

M2<-matrix(rpois(80,5),ncol=4)
M2

The following matrix is created −

     [,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

To create a vector of random rows in M2, add the following code to the above snippet −

M2<-matrix(rpois(80,5),ncol=4)
Random_rows_2<-sample(nrow(M2))
Random_rows_2

Output

If you execute all the above given snippets as a single program, it generates the following output −

[1] 7 20 4 19 1 11 16 9 3 17 8 2 18 15 13 14 6 5 12 10

To randomise rows of M2, add the following code to the above snippet −

M2[Random_rows_2,]

Output

If you execute all the above given snippets as a single program, it generates the following output −

     [,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

Updated on: 09-Nov-2021

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements