This function adds new tips at random to a tree with branch lengths. If no edge lengths are provided, and the tree is ultrametric, then edge lengths are assigned to keep the tree ultrametric. The probability that at new tip is added along any branch is directly proportional to the length of the branch.
add.random(tree, n=NULL, tips=NULL, edge.length=NULL, order=c("random","input"))
an object of class "phylo"
.
a number of tips to add to the tree. If NULL
, will use length(tips)
. If tips
is specified, then n
is also ignored, regardless of its value.
a set of tip names for the added tips. If NULL
, names will be supplied
terminal edge length for the added tips. If NULL
, and is.ultrametric(tree)
==TRUE
, then edge lengths will be assigned to keep the tree ultrametric. Note that if edge lengths are assigned and n>1
, then the asssigned terminal edge lengths are not guaranteed as subsequent random tip addition could occur along the new terminal edge.
addition order for the new tips.
An object of class "phylo"
.
Note that sometimes the resultant tree plotted with plot.phylo
or plotSimmap
may display with branches crossing. If so, the tree can be 'untangled' using untangle
.
Revell, L. J. (2012) phytools: An R package for phylogenetic comparative biology (and other things). Methods Ecol. Evol., 3, 217-223.