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

function in R Langauge is a generic function which centers and scales the columns of a numeric matrix. The **scale()**`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 matrixcenter:represents either logical value or numeric alike vector equal to the number ofxscale:represents either logical value or numeric alike vector equal to the number ofx

**Example 1:**

`# 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] 1.5 3.5 5.5 7.5 9.5 attr(, "scaled:scale") [1] 0.7071068 0.7071068 0.7071068 0.7071068 0.7071068

**Example 2:**

`# 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] 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] 1 2