| outer {base} | R Documentation |
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 RA, Chambers JM, Wilks AR (1988). The New S Language. Chapman and Hall/CRC, London.
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]