You can use the **sweep() **function in R to perform some operation on either the rows or columns of a matrix.

This function uses the following basic syntax:

sweep(x, MARGIN, STATS, FUN)

where:

**x**: Name of the matrix**MARGIN**: The margin to perform function on (1=rows, 2=columns)**STATS**: The value(s) to use in the function**FUN**: The function to perform

The following examples show how to use the **sweep()** function in different scenarios in R.

**Example 1: Use sweep() to Perform Operation on Rows**

The following code shows how to use the **sweep()** function to add a specific number to the values in each row of the matrix:

**#define matrix
mat <- matrix(1:15, nrow=5)
#view matrix
mat
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
#add specific numbers to each row
sweep(mat, 1, c(5, 10, 15, 20, 25), "+")
[,1] [,2] [,3]
[1,] 6 11 16
[2,] 12 17 22
[3,] 18 23 28
[4,] 24 29 34
[5,] 30 35 40
**

Here’s how the **sweep()** function worked in this scenario:

**5**was added to each value in the first row.**10**was added to each value in the second row.**15**was added to each value in the third row.**20**was added to each value in the fourth row.**25**was added to each value in the fifth row.

Note that in this example we used addition (+) as the mathematical operation to perform, but we could choose to use a different operation.

For example, the following code shows how to multiply the values in each row by certain numbers:

**#define matrix
mat <- matrix(1:15, nrow=5)
#view matrix
mat
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
#multiply values in each row by certain amount
sweep(mat, 1, c(.5, 1, 2, 4, 6), "*")
[,1] [,2] [,3]
[1,] 0.5 3 5.5
[2,] 2.0 7 12.0
[3,] 6.0 16 26.0
[4,] 16.0 36 56.0
[5,] 30.0 60 90.0**

**Example 2: Use sweep() to ****Perform Operation on Columns**

The following code shows how to use the **sweep()** function to add a specific number to the values in each column of the matrix:

**#define matrix
mat <- matrix(1:15, nrow=5)
#view matrix
mat
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
#add specific numbers to each column
sweep(mat, 2, c(5, 10, 15), "+")
[,1] [,2] [,3]
[1,] 6 16 26
[2,] 7 17 27
[3,] 8 18 28
[4,] 9 19 29
[5,] 10 20 30**

Here’s how the **sweep()** function worked in this scenario:

**5**was added to each value in the first column.**10**was added to each value in the second column.**15**was added to each value in the third column.

**Additional Resources**

The following tutorials explain how to perform other common operations in R:

How to Create an Empty Matrix in R

How to Convert Data Frame to Matrix in R

How to Plot the Rows of a Matrix in R