[Phylobase-commits] r136 - pkg/R

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Tue Mar 4 17:44:38 CET 2008


Author: jombart
Date: 2008-03-04 17:44:38 +0100 (Tue, 04 Mar 2008)
New Revision: 136

Modified:
   pkg/R/phylo4.R
Log:
Fixed the order of rows in printing of phylo4d.


Modified: pkg/R/phylo4.R
===================================================================
--- pkg/R/phylo4.R	2008-03-03 16:03:26 UTC (rev 135)
+++ pkg/R/phylo4.R	2008-03-04 16:44:38 UTC (rev 136)
@@ -331,15 +331,16 @@
     as(from, "phylo4") -> tree  	 # get tree
     as(tree, "data.frame") -> t_df   # convert to data.frame
     tdata(from, "allnode") -> dat               # get data
-    t_df$order <- rownames(t_df)     # save roworder of tree
+    old.ord <- t_df$taxon.name     # save roworder of tree
 
-    merge(t_df, dat, by.x="taxon.name", by.y="row.names", all.x=TRUE, sort=FALSE) -> tdat
-                                     # merged tree, data, but mixed up
+    ## merge data.frames of tree and data
+    tdat <- merge(t_df, dat, by.x="taxon.name", by.y="row.names", all.x=TRUE, all.y=FALSE, sort=FALSE)
 
-    order(tdat$order) -> o           # ordering to get back original roworder                              
-    tdat[o,] -> tdat                 # original order of tree
-    rownames(tdat) <- tdat$order     # fix scrambled row numbers
-    return(tdat[,!colnames(tdat) %in% "order"]) # drop "order"
+    ## restore the correct order (i.e. the one of the tree data.frame)
+    idx <- match(old.ord,tdat$taxon.name)
+    res <- tdat[idx,]
+
+    return(res) # drop "order"
 })
     
 setGeneric("print")



More information about the Phylobase-commits mailing list