blob: 638d0399a4fe702baf315a24e746649d692bd760 [file] [log] [blame]
% File src/library/base/man/scale.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2018 R Core Team
% Distributed under GPL 2 or later
\name{scale}
\alias{scale}
\alias{scale.default}
\title{Scaling and Centering of Matrix-like Objects}
\description{
\code{scale} is generic function whose default method centers and/or
scales the columns of a numeric matrix.
}
\usage{
scale(x, center = TRUE, scale = TRUE)
}
\arguments{
\item{x}{a numeric matrix(like object).}
\item{center}{either a logical value or numeric-alike vector of length
equal to the number of columns of \code{x}, where
\sQuote{numeric-alike} means that \code{\link{as.numeric}(.)} will
be applied successfully if \code{\link{is.numeric}(.)} is not true.}
\item{scale}{either a logical value or a numeric-alike vector of length
equal to the number of columns of \code{x}.}
}
\value{
For \code{scale.default}, the centered, scaled matrix. The numeric
centering and scalings used (if any) are returned as attributes
\code{"scaled:center"} and \code{"scaled:scale"}
}
\details{
The value of \code{center} determines how column centering is
performed. If \code{center} is a numeric-alike vector with length equal to
the number of columns of \code{x}, then each column of \code{x} has
the corresponding value from \code{center} subtracted from it. If
\code{center} is \code{TRUE} then centering is done by subtracting the
column means (omitting \code{NA}s) of \code{x} from their
corresponding columns, and if \code{center} is \code{FALSE}, no
centering is done.
The value of \code{scale} determines how column scaling is performed
(after centering). If \code{scale} is a numeric-alike vector with length
equal to the number of columns of \code{x}, then each column of
\code{x} is divided by the corresponding value from \code{scale}.
If \code{scale} is \code{TRUE} then scaling is done by dividing the
(centered) columns of \code{x} by their standard deviations if
\code{center} is \code{TRUE}, and the root mean square otherwise.
If \code{scale} is \code{FALSE}, no scaling is done.
The root-mean-square for a (possibly centered) column is defined as
\eqn{\sqrt{\sum(x^2)/(n-1)}}{sqrt(sum(x^2)/(n-1))}, where \eqn{x} is
a vector of the non-missing values and \eqn{n} is the number of
non-missing values. In the case \code{center = TRUE}, this is the
same as the standard deviation, but in general it is not. (To scale
by the standard deviations without centering, use
\code{scale(x, center = FALSE, scale = apply(x, 2, sd, na.rm = TRUE))}.)
}
\references{
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth & Brooks/Cole.
}
\seealso{
\code{\link{sweep}} which allows centering (and scaling) with
arbitrary statistics.
For working with the scale of a plot, see \code{\link{par}}.
}
\examples{
require(stats)
x <- matrix(1:10, ncol = 2)
(centered.x <- scale(x, scale = FALSE))
cov(centered.scaled.x <- scale(x)) # all 1
}
\keyword{array}