-## drop.tip.R (2009-03-04)
+## drop.tip.R (2009-03-22)
## Remove Tips in a Phylogenetic Tree
{
if (class(phy) != "phylo")
stop('object "phy" is not of class "phylo"')
+ phy <- reorder(phy)
Ntip <- length(phy$tip.label)
NEWROOT <- ROOT <- Ntip + 1
Nnode <- phy$Nnode
TIPS <- phy$edge[, 2] <= Ntip
## keep the ordering so no need to reorder tip.label:
phy$edge[TIPS, 2] <- rank(phy$edge[TIPS, 2])
- Ntip <- length(phy$tip.label) # update Ntip
+ ## 3) update node.label if needed
+ if (!is.null(phy$node.label))
+ phy$node.label <- phy$node.label[sort(unique(phy$edge[, 1])) - Ntip]
+ Ntip <- length(phy$tip.label) # 4) update Ntip
## make new tip labels if necessary
if (subtree || !trim.internal) {