# 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 −

 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 −

 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