outer {base} | R Documentation |
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], ...)
.
outer(X, Y, FUN="*", ...)
X %o% Y
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 |
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. Therefore, it must be a vectorized function (or the
name of one), expecting at
least two arguments.
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 internally 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, "*")
.
Jonathan Rougier
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
%*%
for usual (inner) matrix vector
multiplication;
kronecker
which is based on outer
;
Vectorize
for vectorizing a non-vectorized function.
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]