 Open in App
Not now

# Scale the Columns of a Matrix in R Programming – scale() Function

• Last Updated : 09 Dec, 2021

`scale()` function in R Language is a generic function which centers and scales the columns of a numeric matrix. The `center` parameter takes either numeric alike vector or logical value. If the numeric vector is provided, then each column of the matrix has the corresponding value from `center` subtracted from it. If the logical value is provided TRUE, then column means of the matrix is subtracted from their corresponding columns. The `scale` takes either numeric alike vector or logical value. When provided with a numeric like vector, then each column of the matrix is divided by the corresponding value from `scale`. If the logical value is provided in `scale` parameter, then centered columns of the matrix is divided by their standard deviations, and the root mean square otherwise. If FALSE, no scaling is done on the matrix.

Syntax:
scale(x, center = TRUE, scale = TRUE)

Parameters:
x: represents numeric matrix
center: represents either logical value or numeric alike vector equal to the number of x
scale: represents either logical value or numeric alike vector equal to the number of x

Example 1:

## r

 `# Create matrix``mt <- ``matrix``(1:10, ncol = 5)`` ` `# Print matrix``cat``(``"Matrix:\n"``)``print``(mt)`` ` `# Scale matrix with default arguments``cat``(``"\nAfter scaling:\n"``)``scale``(mt)`

Output:

```Matrix:
[, 1] [, 2] [, 3] [, 4] [, 5]
[1, ]    1    3    5    7    9
[2, ]    2    4    6    8   10

After scaling:
[, 1]       [, 2]       [, 3]       [, 4]       [, 5]
[1, ] -0.7071068 -0.7071068 -0.7071068 -0.7071068 -0.7071068
[2, ]  0.7071068  0.7071068  0.7071068  0.7071068  0.7071068
attr(, "scaled:center")
 1.5 3.5 5.5 7.5 9.5
attr(, "scaled:scale")
 0.7071068 0.7071068 0.7071068 0.7071068 0.7071068
```

Example 2:

## r

 `# Create matrix``mt <- ``matrix``(1:10, ncol = 2)`` ` `# Print matrix``cat``(``"Matrix:\n"``)``print``(mt)`` ` `# Scale center by vector of values``cat``(``"\nScale center by vector of values:\n"``)``scale``(mt, center = ``c``(1, 2), scale = ``FALSE``)`` ` `# Scale by vector of values``cat``(``"\nScale by vector of values:\n"``)``scale``(mt, center = ``FALSE``, scale = ``c``(1, 2))`

Output:

```Matrix:
[, 1] [, 2]
[1, ]    1    6
[2, ]    2    7
[3, ]    3    8
[4, ]    4    9
[5, ]    5   10

Scale center by vector of values:
[, 1] [, 2]
[1, ]    0    4
[2, ]    1    5
[3, ]    2    6
[4, ]    3    7
[5, ]    4    8
attr(, "scaled:center")
 1 2

Scale by vector of values:
[, 1] [, 2]
[1, ]    1  3.0
[2, ]    2  3.5
[3, ]    3  4.0
[4, ]    4  4.5
[5, ]    5  5.0
attr(, "scaled:scale")
 1 2
```

My Personal Notes arrow_drop_up