Given matrices `x`

and `y`

as arguments and an optional matrix or vector of weights, `w`

,
return a weighted matrix cross-product, `t(x) w y`

.
If no weights are supplied, or the weights are constant, the function uses
`crossprod`

for speed.

1 | ```
wcrossprod(x, y, w)
``` |

`x,y` |
x, y numeric matrices; |

`w` |
A numeric vector or matrix of weights, conformable with |

A numeric matrix, with appropriate dimnames taken from `x`

and `y`

.

Michael Friendly, John Fox jfox@mcmaster.ca

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ```
set.seed(12345)
n <- 24
drop <- 4
sex <- sample(c("M", "F"), n, replace=TRUE)
x1 <- 1:n
x2 <- sample(1:n)
extra <- c( rep(0, n - drop), floor(15 + 10 * rnorm(drop)) )
y1 <- x1 + 3*x2 + 6*(sex=="M") + floor(10 * rnorm(n)) + extra
y2 <- x1 - 2*x2 - 8*(sex=="M") + floor(10 * rnorm(n)) + extra
# assign non-zero weights to 'dropped' obs
wt <- c(rep(1, n-drop), rep(.2,drop))
X <- cbind(x1, x2)
Y <- cbind(y1, y2)
wcrossprod(X)
wcrossprod(X, w=wt)
wcrossprod(X, Y)
wcrossprod(X, Y, w=wt)
wcrossprod(x1, y1)
wcrossprod(x1, y1, w=wt)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.