Given a tree or a list of taxa, EnforceOutgroup() rearranges the ingroup and outgroup taxa such that the two are sister taxa across the root, without changing the relationships within the ingroup or within the outgroup.

EnforceOutgroup(tree, outgroup)

# S3 method for phylo
EnforceOutgroup(tree, outgroup)

# S3 method for character
EnforceOutgroup(tree, outgroup)



Either a tree of class phylo; or (for EnforceOutgroup()) a character vector listing the names of all the taxa in the tree, from which a random tree will be generated.


Character vector containing the names of taxa to include in the outgroup.


EnforceOutgroup() returns a tree of class phylo where all outgroup taxa are sister to all remaining taxa, without modifying the ingroup topology.

See also

For a more robust implementation, see RootTree(), which will eventually replace this function (#30).

Other tree manipulation: AddTip(), CollapseNode(), ConsensusWithout(), DropTip(), ImposeConstraint(), LeafLabelInterchange(), MakeTreeBinary(), RenumberTips(), RenumberTree(), Renumber(), RootTree(), SingleTaxonTree(), SortTree(), Subtree()


Martin R. Smith (


tree <- EnforceOutgroup(letters[1:9], letters[1:3])