# rTraitMult

##### Multivariate Character Simulation

This function simulates the evolution of a multivariate set of traits along a phylogeny. The calculation is done recursively from the root.

- Keywords
- datagen

##### Usage

```
rTraitMult(phy, model, p = 1, root.value = rep(0, p), ancestor = FALSE,
asFactor = NULL, trait.labels = paste("x", 1:p, sep = ""), ...)
```

##### Arguments

- phy
an object of class

`"phylo"`

.- model
a function specifying the model (see details).

- p
an integer giving the number of traits.

- root.value
a numeric vector giving the values at the root.

- ancestor
a logical value specifying whether to return the values at the nodes as well (by default, only the values at the tips are returned).

- asFactor
the indices of the traits that are returned as factors (discrete traits).

- trait.labels
a vector of mode character giving the names of the traits.

- …
further arguments passed to

`model`

if it is a function.

##### Details

The model is specified with an R function of the form ```
foo(x,
l)
```

where `x`

is a vector of the traits of the ancestor and
`l`

is the branch length. Other arguments may be added. The
function must return a vector of length `p`

.

##### Value

A data frame with `p`

columns whose names are given by
`trait.labels`

and row names taken from the labels of the tree.

##### See Also

##### Examples

```
# NOT RUN {
## correlated evolution of 2 continuous traits:
mod <- function(x, l) {
y1 <- rnorm(1, x[1] + 0.5*x[2], 0.1)
y2 <- rnorm(1, 0.5*x[1] + x[2], 0.1)
c(y1, y2)
}
set.seed(11)
tr <- makeNodeLabel(rcoal(20))
x <- rTraitMult(tr, mod, 2, ancestor = TRUE)
op <- par(mfcol = c(2, 1))
plot(x, type = "n")
text(x, labels = rownames(x), cex = 0.7)
oq <- par(mar = c(0, 1, 0, 1), xpd = TRUE)
plot(tr, font = 1, cex = 0.7)
nodelabels(tr$node.label, cex = 0.7, adj = 1)
par(c(op, oq))
# }
```

*Documentation reproduced from package ape, version 5.3, License: GPL (>= 2)*