outer Outer Product of Arrays
 Description
The outer product of the arrays X and Y is the array A with dimension c(dim(X), dim(Y)) where element A[c(arrayindex.x, arrayindex.y)]
    = FUN(X[arrayindex.x], Y[arrayindex.y], ...). 
Usage
outer(X, Y, FUN = "*", ...) X %o% Y
Arguments
| X, Y | First and second arguments for function  | 
| FUN | a function to use on the outer products, found via  | 
| ... | optional arguments to be passed to  | 
Details
X and Y must be suitable arguments for FUN. Each will be extended by rep to length the products of the lengths of X and Y before FUN is called. 
FUN is called with these two extended vectors as arguments (plus any arguments in ...). 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 X and Y will be copied to the answer, and a dimension assigned which is the concatenation of the dimensions of X and Y (or lengths if dimensions do not exist). 
FUN = "*" is handled as a special case via as.vector(X) %*% t(as.vector(Y)), and is intended only for numeric vectors and arrays. 
%o% is binary operator providing a wrapper for outer(x, y, "*"). 
Author(s)
Jonathan Rougier
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
See Also
%*% for usual (inner) matrix vector multiplication; kronecker which is based on outer; 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]
    Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.