Rev 68948 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/crossprod.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2014 R Core Team% Distributed under GPL 2 or later\name{crossprod}\alias{crossprod}\alias{tcrossprod}\title{Matrix Crossproduct}\description{Given matrices \code{x} and \code{y} as arguments, return a matrixcross-product. This is formally equivalent to (but usually slightlyfaster than) the call \code{t(x) \%*\% y} (\code{crossprod}) or\code{x \%*\% t(y)} (\code{tcrossprod}).}\usage{crossprod(x, y = NULL)tcrossprod(x, y = NULL)}\arguments{\item{x, y}{numeric or complex matrices (or vectors): \code{y = NULL}is taken to be the same matrix as \code{x}. Vectors are promoted tosingle-column or single-row matrices, depending on the context.}}\value{A double or complex matrix, with appropriate \code{dimnames} takenfrom \code{x} and \code{y}.}\note{When \code{x} or \code{y} are not matrices, they are treated as column orrow matrices, but their \code{\link{names}} are usually \bold{not}promoted to \code{\link{dimnames}}. Hence, currently, the lastexample has empty dimnames.In the same situation, these matrix products (also \code{\link{\%*\%}})are more flexible in promotion of vectors to row or column matrices, suchthat more cases are allowed, since \R 3.2.0.}%% Consider using a new optional argument, say 'make.names = NA'%% {as in kronecker} with possible values FALSE / NA / TRUE where%% FALSE gives empty dimnames; NA = current behavior; TRUE gives "as much as sensible"\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth & Brooks/Cole.}\seealso{\code{\link{\%*\%}} and outer product \code{\link{\%o\%}}.}\examples{(z <- crossprod(1:4)) # = sum(1 + 2^2 + 3^2 + 4^2)drop(z) # scalarx <- 1:4; names(x) <- letters[1:4]; xtcrossprod(as.matrix(x)) # isidentical(tcrossprod(as.matrix(x)),crossprod(t(x)))tcrossprod(x) # no dimnamesm <- matrix(1:6, 2,3) ; v <- 1:3; v2 <- 2:1stopifnot(identical(tcrossprod(v, m), v \%*\% t(m)),identical(tcrossprod(v, m), crossprod(v, t(m))),identical(crossprod(m, v2), t(m) \%*\% v2))}\keyword{algebra}\keyword{array}