]> git.donarmstrong.com Git - ape.git/commitdiff
improved unique.multiPhylo()
authorparadis <paradis@6e262413-ae40-0410-9e79-b911bd7a66b7>
Mon, 9 Jun 2008 23:55:32 +0000 (23:55 +0000)
committerparadis <paradis@6e262413-ae40-0410-9e79-b911bd7a66b7>
Mon, 9 Jun 2008 23:55:32 +0000 (23:55 +0000)
git-svn-id: https://svn.mpl.ird.fr/ape/dev/ape@33 6e262413-ae40-0410-9e79-b911bd7a66b7

Changes
DESCRIPTION
R/unique.multiPhylo.R

diff --git a/Changes b/Changes
index 4aa9a918f92a3056f6a3ee439cd2b64a76f2042c..f8562e43cd76dbd0cf09154e6a382422054c1fea 100644 (file)
--- a/Changes
+++ b/Changes
@@ -7,6 +7,12 @@ NEW FEATURES
       set of DNA sequences.
 
 
+OTHER CHANGES
+
+    o unique.multiPhylo() is faster thanks to a suggestion by Vladimir
+      Minin.
+
+
 
                CHANGES IN APE VERSION 2.2
 
index 6b2d89a65ac76fcabe030301a23776dcc8de3caa..a9c4fc02c3ddfc591f896fe6221523e4158978e4 100644 (file)
@@ -1,6 +1,6 @@
 Package: ape
 Version: 2.2-1
-Date: 2008-06-08
+Date: 2008-06-09
 Title: Analyses of Phylogenetics and Evolution
 Author: Emmanuel Paradis, Ben Bolker, Julien Claude, Hoa Sien Cuong,
   Richard Desper, Benoit Durand, Julien Dutheil, Olivier Gascuel,
index a39ffdffcc9bcf5dcae47e3a00a06064b04a91ae..2887c0d1f205fe8b862b249339ca05ea4d8b79d8 100644 (file)
@@ -1,4 +1,4 @@
-## unique.multiPhylo.R (2008-02-06)
+## unique.multiPhylo.R (2008-06-09)
 
 ##   Revomes Duplicate Trees from a List
 
@@ -12,18 +12,18 @@ unique.multiPhylo <- function(x, incomparables = FALSE,
                               use.tip.label = TRUE, ...)
 {
     n <- length(x)
-    keep <- !logical(n)
+    keep <- 1L
     for (i in 2:n) {
-        j <- 1
-        while (j < i) {
-            if (all.equal(x[[j]], x[[i]],
+        already.seen <- FALSE
+        for (s in x[keep]) {
+            if (all.equal(s, x[[i]],
                           use.edge.length = use.edge.length,
                           use.tip.label = use.tip.label)) {
-                keep[i] <- FALSE
+                already.seen <- TRUE
                 break
             }
-            j <- j + 1
         }
+        if (!already.seen) keep <- c(keep, i)
     }
     x[keep]
 }