PCMTreeSplitAtNode: Slit a tree at a given internal node into a clade rooted at...

View source: R/PCMTree.R

PCMTreeSplitAtNodeR Documentation

Slit a tree at a given internal node into a clade rooted at this node and the remaining tree after dropping this clade

Description

Slit a tree at a given internal node into a clade rooted at this node and the remaining tree after dropping this clade

Usage

PCMTreeSplitAtNode(
  tree,
  node,
  tableAncestors = PCMTreeTableAncestors(tree),
  X = NULL
)

Arguments

tree

a PCMTree object.

node

an integer or character indicating a root, internal or tip node

tableAncestors

an integer matrix returned by a previous call to PCMTreeTableAncestors(tree) or NULL.

X

an optional k x N matrix with trait value vectors for each tip in tree.

Details

In the current implementation, the edge.jump and edge.part members of the tree will be discarded and not present in the clade.

Value

A list containing two named phylo objects:

  • clade The subtree (clade) starting at node.

  • Xclade The portion of X attributable to the tips in clade; NULL if X is NULL.

  • rest The tree resulting after dropping all tips in the clade.

  • Xrest The portion of X attributable to the tips in rest; NULL if X is NULL.

Examples

set.seed(1, kind = "Mersenne-Twister", normal.kind = "Inversion")
tree <- PCMTree(ape::rtree(25))

if(requireNamespace("ggtree"))
PCMTreePlot(tree) + ggtree::geom_nodelab(angle = 45) +
  ggtree::geom_tiplab(angle = 45)

spl <- PCMTreeSplitAtNode(tree, 28)

if(requireNamespace("ggtree"))
PCMTreePlot(PCMTree(spl$clade)) + ggtree::geom_nodelab(angle = 45) +
  ggtree::geom_tiplab(angle = 45)


if(requireNamespace("ggtree"))
PCMTreePlot(PCMTree(spl$rest)) + ggtree::geom_nodelab(angle = 45) +
  ggtree::geom_tiplab(angle = 45)


venelin/PCMBase documentation built on March 14, 2024, 8:24 p.m.