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
ancestors
anddescendants
, with a warning.-
ancestor
will returnNA
for any invalid nodes, with a warning. Both
children
andsiblings
will return an empty vector, again with a warning.
Value
ancestors
return a named vector (or a list of such vectors in the case of multiple input nodes) of the ancestors and descendants of a node
descendants
return 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
-
ancestor
is analogous toancestors(...{}, type="parent")
(i.e. direct ancestor only), but returns a single concatenated vector in the case of multiple input nodes children
is analogous to
descendants(...{}, type="children")
(i.e. direct descendants only), but is not currently intended to be used with multiple input nodessiblings
returns 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"))