crossprod                package:base                R Documentation

Matrix Crossproduct

Description:

     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').

Usage:

     crossprod(x, y = NULL)

     tcrossprod(x, y = NULL)

Arguments:

    x, y: numeric or complex matrices: 'y = NULL' is taken to be the
          same matrix as 'x'.  Vectors are promoted to single-column
          matrices.

Value:

     A double or complex matrix, with appropriate 'dimnames' taken from
     'x' and 'y'.

Note:

     When 'x' or 'y' are not matrices, they are treated as column or
     row matrices, but their 'names' are usually *not* promoted to
     'dimnames'.  Hence, currently, the last example has empty
     dimnames.

References:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_. Wadsworth & Brooks/Cole.

See Also:

     '%*%' and outer product '%o%'.

Examples:

     (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

