]> git.donarmstrong.com Git - ape.git/blobdiff - R/collapse.singles.R
many changes!
[ape.git] / R / collapse.singles.R
index cfbf4c80c4c4ddfef46d2471ecdc777714a33f84..bbde0a17e003ce464a68dab76afa7d4aa412b416 100644 (file)
@@ -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
 }