1 ## reorder.phylo.R (2007-06-16)
3 ## Internal Reordering of Trees
5 ## Copyright 2006-2007 Emmanuel Paradis
7 ## This file is part of the R-package `ape'.
8 ## See the file ../COPYING for licensing issues.
10 reorder.phylo <- function(x, order = "cladewise", ...)
12 order <- match.arg(order, c("cladewise", "pruningwise"))
13 if (!is.null(attr(x, "order")))
14 if (attr(x, "order") == order) return(x)
15 nb.tip <- length(x$tip.label)
17 nb.edge <- dim(x$edge)[1]
18 neworder <- if (order == "cladewise")
19 .C("neworder_cladewise", as.integer(nb.tip),
20 as.integer(x$edge[, 1]), as.integer(x$edge[, 2]),
21 as.integer(nb.edge), integer(nb.edge),
24 .C("neworder_pruningwise", as.integer(nb.tip),
25 as.integer(nb.node), as.integer(x$edge[, 1]),
26 as.integer(x$edge[, 2]), as.integer(nb.edge),
27 integer(nb.edge), PACKAGE = "ape")[[6]]
28 x$edge <- x$edge[neworder, ]
29 if (!is.null(x$edge.length))
30 x$edge.length <- x$edge.length[neworder]
31 attr(x, "order") <- order