Given matrices x
and y
as arguments, return a matrix
cross-product. This is formally equivalent to (but usually slightly
faster than) the call t(x) %*% y
(crossprod
) or
x %*% t(y)
(tcrossprod
).
crossprod(x, y = NULL)tcrossprod(x, y = NULL)
numeric or complex matrices (or vectors): y = NULL
is taken to be the same matrix as x
. Vectors are promoted to
single-column or single-row matrices, depending on the context.
A double or complex matrix, with appropriate dimnames
taken
from x
and y
.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
# NOT RUN {
(z <- crossprod(1:4)) # = sum(1 + 2^2 + 3^2 + 4^2)
drop(z) # scalar
x <- 1:4; names(x) <- letters[1:4]; x
tcrossprod(as.matrix(x)) # is
identical(tcrossprod(as.matrix(x)),
crossprod(t(x)))
tcrossprod(x) # no dimnames
m <- matrix(1:6, 2,3) ; v <- 1:3; v2 <- 2:1
stopifnot(identical(tcrossprod(v, m), v %*% t(m)),
identical(tcrossprod(v, m), crossprod(v, t(m))),
identical(crossprod(m, v2), t(m) %*% v2))
# }
Run the code above in your browser using DataLab