# outer {base}

### 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`

. Typically a vector or array. - FUN
- a function to use on the outer products, found
*via*`match.fun`

(except for the special case`"*"`

). - ...
- optional arguments to be passed to
`FUN`

.

### 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. 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, "*")`

.

### 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

Documentation reproduced from R 3.0.2. License: GPL-2.