

   OOuutteerr PPrroodduucctt ooff AArrrraayyss

        outer(X, Y, FUN="*", ...)
        x %o% y

   AArrgguummeennttss::

          X: A vector or array.

          Y: A vector or array.

        FUN: a function to use on the outer products, it may be
             a quoted string.

        ...: optional arguments to be passed to `FUN'.

   DDeessccrriippttiioonn::

        The outer product of the arrays `X' and `Y' is the
        array `A' with dimension `c(dim(X), dim(Y))' where ele-
        ment `A[i, j, .., k, l, ..] = FUN(X[i, j, ..], Y[k,
        l,..], ..)'.

   DDeettaaiillss::

        `FUN' must be a function (or the name of it) which
        expects at least two arguments and which operates ele-
        mentwise on arrays.

        Where they exist, the [dim]names of `X' and `Y' will be
        preserved.

        `%o%' is an `.Alias' for `outer' (where `FUN' cannot be
        changed from `"*"').

   AAuutthhoorr((ss))::

        Jonathan Rougier

   SSeeee AAllssoo::

        `matmult' for usual (inner) matrix vector multiplica-
        tion; `kronecker' which is based on `outer'.

   EExxaammpplleess::

        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]

