% File src/library/base/man/outer.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2014 R Core Team
% Distributed under GPL 2 or later

\name{outer}
\alias{outer}
\alias{\%o\%}
\title{Outer Product of Arrays}
\description{
  The outer product of the arrays \code{X} and \code{Y} is the array
  \code{A} with dimension \code{c(dim(X), dim(Y))} where element
  \code{A[c(arrayindex.x, arrayindex.y)]
    = FUN(X[arrayindex.x], Y[arrayindex.y], \dots)}.
}
\usage{
outer(X, Y, FUN = "*", \dots)
X \%o\% Y
}

\arguments{
  \item{X, Y}{First and second arguments for function \code{FUN}.
    Typically a vector or array.}
  \item{FUN}{a function to use on the outer products, found \emph{via}
    \code{\link{match.fun}} (except for the special case \code{"*"}).}
  \item{\dots}{optional arguments to be passed to \code{FUN}.}
}
\details{
  \code{X} and \code{Y} must be suitable arguments for \code{FUN}.  Each
  will be extended by \code{\link{rep}} to length the products of the
  lengths of \code{X} and \code{Y} before \code{FUN} is called.

  \code{FUN} is called with these two extended vectors as arguments
  (plus any arguments in \code{\dots}).  It must be a vectorized
  function (or the name of one) expecting at least two arguments and
  returning a value with the same length as the first (and the second).

  Where they exist, the [dim]names of \code{X} and \code{Y} will be
  copied to the answer, and a dimension assigned which is the
  concatenation of the dimensions of \code{X} and \code{Y} (or lengths
  if dimensions do not exist).

  \code{FUN = "*"} is handled as a special case \emph{via}
  \code{as.vector(X) \%*\% t(as.vector(Y))}, and is intended only for
  numeric vectors and arrays.

  \code{\%o\%} is binary operator providing a wrapper for
  \code{outer(x, y, "*")}.
}
\author{Jonathan Rougier}
\references{
  Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
  \emph{The New S Language}.
  Wadsworth & Brooks/Cole.
}
\seealso{
  \code{\link{\%*\%}} for usual (\emph{inner}) matrix vector
  multiplication;
  \code{\link{kronecker}} which is based on \code{outer};
  \code{\link{Vectorize}} for vectorizing a non-vectorized function.
}
\examples{
x <- 1:9; names(x) <- x
# Multiplication & Power Tables
x \%o\% x
y <- 2:8; names(y) <- paste(y,":", sep = "")
outer(y, x, "^")

outer(month.abb, 1999:2003, FUN = "paste")

## three way multiplication table:
x \%o\% x \%o\% y[1:3]
}
\keyword{array}
