`simulate`

Method for `formula`

objects that dispatches based on the Left-Hand SideThis method evaluates the left-hand side (LHS) of the given formula and dispatches it to an appropriate method based on the result by setting an nonce class name on the formula.

```
# S3 method for formula
simulate(object, nsim = 1 , seed = NULL, ...,
basis, newdata, data)
```

- object
a one- or two-sided

`formula`

.- nsim,seed
number of realisations to simulate and the random seed to use; see

`simulate`

- ...
additional arguments to methods

- basis
if given, overrides the LHS of the formula for the purposes of dispatching

- newdata,data
if passed, the

`object`

's LHS is evaluated in this environment; at most one of the two may be passed.

The dispatching works as follows:

If

`basis`

is not passed, and the formula has an LHS the expression on the LHS of the formula in the`object`

is evaluated in the environment`newdata`

or`data`

(if given), in any case enclosed by the environment of`object`

. Otherwise,`basis`

is used.The result is set as an attribute

`".Basis"`

on`object`

. If there is no`basis`

or LHS, it is not set.The class vector of

`object`

has`c("formula_lhs_`

prepended to it, where`CLASS`", "formula_lhs")`CLASS`is the class of the LHS value or`basis`

. If LHS or`basis`

has multiple classes, they are all prepended; if there is no LHS or`basis`

,`c("formula_lhs_", "formula_lhs")`

is.`simulate`

generic is evaluated on the new`object`

, with all arguments passed on, excluding`basis`

; if`newdata`

or`data`

are missing, they too are not passed on. The evaluation takes place in the parent's environment.

A "method" to receive a formula whose LHS evaluates to `CLASS`
can therefore be implemented by a function
`simulate.formula_lhs_`

. This function can expect a
`CLASS`()`formula`

object, with additional attribute `.Basis`

giving the
evaluated LHS (so that it does not need to be evaluated again).