From: paradis Date: Mon, 9 Jun 2008 23:55:32 +0000 (+0000) Subject: improved unique.multiPhylo() X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=62ec445353b420aac117855ff989dfcdce19f068;p=ape.git improved unique.multiPhylo() git-svn-id: https://svn.mpl.ird.fr/ape/dev/ape@33 6e262413-ae40-0410-9e79-b911bd7a66b7 --- diff --git a/Changes b/Changes index 4aa9a91..f8562e4 100644 --- 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 diff --git a/DESCRIPTION b/DESCRIPTION index 6b2d89a..a9c4fc0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -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, diff --git a/R/unique.multiPhylo.R b/R/unique.multiPhylo.R index a39ffdf..2887c0d 100644 --- a/R/unique.multiPhylo.R +++ b/R/unique.multiPhylo.R @@ -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] }