| rowWeightedMedians.matrix {matrixStats} | R Documentation |
Calculates the weighted medians for each row (column) in a matrix.
## S3 method for class 'matrix': rowWeightedMedians(x, w=NULL, na.rm=FALSE, ...) ## S3 method for class 'matrix': colWeightedMedians(x, w=NULL, na.rm=FALSE, ...)
x |
A numeric NxK matrix. |
w |
A numeric vector of length K (N). |
na.rm |
If TRUE, missing values are excluded from the calculation,
otherwise not. |
... |
Additional arguments passed to
weightedMedian. |
The implementations of these methods are optimized for both speed
and memory.
If no weights are given, the corresponding
rowMeans()/colMeans() are used, respectively.
Returns a numeric vector of length N (K).
Henrik Bengtsson (http://www.braju.com/R/)
Internally, weightedMedian of aroma.light
is used.
if (require("aroma.light")) {
x <- matrix(rnorm(20), nrow=5, ncol=4)
print(x)
# Non-weighted row averages
xM0 <- rowMedians(x)
xM <- rowWeightedMedians(x)
stopifnot(all.equal(xM, xM0))
# Weighted row averages (uniform weights)
w <- rep(2.5, ncol(x))
xM <- rowWeightedMedians(x, w=w)
stopifnot(all.equal(xM, xM0))
# Weighted row averages (excluding some columns)
w <- c(1,1,0,1)
xM0 <- rowMedians(x[,(w == 1),drop=FALSE]);
xM <- rowWeightedMedians(x, w=w)
stopifnot(all.equal(xM, xM0))
# Weighted row averages (excluding some columns)
w <- c(0,1,0,0)
xM0 <- rowMedians(x[,(w == 1),drop=FALSE]);
xM <- rowWeightedMedians(x, w=w)
stopifnot(all.equal(xM, xM0))
# Weighted averages by rows and columns
w <- 1:4
xM1 <- rowWeightedMedians(x, w=w)
xM2 <- colWeightedMedians(t(x), w=w)
stopifnot(all.equal(xM2, xM1))
}