X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=R%2Fcollapse.singles.R;h=bbde0a17e003ce464a68dab76afa7d4aa412b416;hb=f295ab19440298e543db5a270e54f10a84382197;hp=cfbf4c80c4c4ddfef46d2471ecdc777714a33f84;hpb=c827059eeafc8cbe41c812b26979543ab287803e;p=ape.git diff --git a/R/collapse.singles.R b/R/collapse.singles.R index cfbf4c8..bbde0a1 100644 --- a/R/collapse.singles.R +++ b/R/collapse.singles.R @@ -1,4 +1,4 @@ -## collapse.singles.R (2006-07-15) +## collapse.singles.R (2010-07-23) ## Collapse "Single" Nodes @@ -11,6 +11,11 @@ collapse.singles <- function(tree) { elen <- tree$edge.length xmat <- tree$edge + ## added by Elizabeth Purdom (2008-06-19): + node.lab <- tree$node.label + nnode <- tree$Nnode + ntip <- length(tree$tip.label) + ## end singles <- NA while (length(singles) > 0) { ## changed by EP to make it slightly more efficient: @@ -24,16 +29,24 @@ collapse.singles <- function(tree) prev.node <- which(xmat[, 2] == i) next.node <- which(xmat[, 1] == i) xmat[prev.node, 2] <- xmat[next.node, 2] - xmat <- xmat[xmat[, 1] != i, ] ## drop + xmat <- xmat[xmat[, 1] != i, ] # drop ## changed by EP for the new coding of "phylo" (2006-10-05): ## xmat[xmat < i] <- xmat[xmat < i] + 1 ## adjust indices - xmat[xmat > i] <- xmat[xmat > i] - 1 ## adjust indices + xmat[xmat > i] <- xmat[xmat > i] - 1L ## adjust indices # changed '1' by '1L' (2010-07-23) ## END elen[prev.node] <- elen[prev.node] + elen[next.node] + ## added by Elizabeth Purdom (2008-06-19): + if (!is.null(node.lab)) node.lab <- node.lab[-c(i - ntip)] + nnode <- nnode - 1L + ## end elen <- elen[-next.node] } } tree$edge <- xmat tree$edge.length <- elen + ## added by Elizabeth Purdom (2008-06-19): + tree$node.label <- node.lab + tree$Nnode <- nnode + ## end tree }