| ancestor {phylobase} | R Documentation |
Tree traversal and utility functions
Description
Functions for describing relationships among phylogenetic nodes (i.e. internal nodes or tips).
Usage
ancestor(phy, node)
children(phy, node)
descendants(phy, node, type = c("tips", "children", "all", "ALL"))
siblings(phy, node, include.self = FALSE)
ancestors(phy, node, type = c("all", "parent", "ALL"))
Arguments
phy |
a phylo4 object (or one inheriting from phylo4, e.g. a phylo4d object) |
node |
either an integer corresponding to a node ID number, or a
character corresponding to a node label; for |
type |
( |
include.self |
whether to include self in list of siblings |
Details
ancestors and descendants can take node vectors of
arbitrary length, returning a list of output vectors if the number of valid
input nodes is greater than one. List element names are taken directly from
the input node vector.
If any supplied nodes are not found in the tree, the behavior currently varies across functions.
Invalid nodes are automatically omitted by
ancestorsanddescendants, with a warning.-
ancestorwill returnNAfor any invalid nodes, with a warning. Both
childrenandsiblingswill return an empty vector, again with a warning.
Value
ancestorsreturn a named vector (or a list of such vectors in the case of multiple input nodes) of the ancestors and descendants of a node
descendantsreturn a named vector (or a list of such vectors in the case of multiple input nodes) of the ancestors and descendants of a node
ancestor-
ancestoris analogous toancestors(...{}, type="parent")(i.e. direct ancestor only), but returns a single concatenated vector in the case of multiple input nodes childrenis analogous to
descendants(...{}, type="children")(i.e. direct descendants only), but is not currently intended to be used with multiple input nodessiblingsreturns sibling nodes (children of the same parent)
See Also
mrca, in the ape package, gives a list of all
subtrees
Examples
data(geospiza)
nodeLabels(geospiza) <- LETTERS[1:nNodes(geospiza)]
plot(as(geospiza, "phylo4"), show.node.label=TRUE)
ancestor(geospiza, "E")
children(geospiza, "C")
descendants(geospiza, "D", type="tips")
descendants(geospiza, "D", type="all")
ancestors(geospiza, "D")
MRCA(geospiza, "conirostris", "difficilis", "fuliginosa")
MRCA(geospiza, "olivacea", "conirostris")
## shortest path between 2 nodes
shortestPath(geospiza, "fortis", "fuliginosa")
shortestPath(geospiza, "F", "L")
## branch length from a tip to the root
sumEdgeLength(geospiza, ancestors(geospiza, "fortis", type="ALL"))