rTraitMult | R Documentation |
This function simulates the evolution of a multivariate set of traits along a phylogeny. The calculation is done recursively from the root.
rTraitMult(phy, model, p = 1, root.value = rep(0, p), ancestor = FALSE,
asFactor = NULL, trait.labels = paste("x", 1:p, sep = ""), ...)
phy |
an object of class |
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 |
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
.
A data frame with p
columns whose names are given by
trait.labels
and row names taken from the labels of the tree.
Emmanuel Paradis
rTraitCont
, rTraitDisc
, ace
## 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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.