Prune a phylogeny to the set of species present in a trait data frame.
addToPhylo <- function(phylogenyTraits, GROUPTraits) {
phylogenyTraits <- force.ultrametric(tree = phylogenyTraits, method = c("extend"))
tipsToAdd <- which(!rownames(GROUPTraits) %in% phylogenyTraits$tip.label)
namesToAdd <- rownames(GROUPTraits)[tipsToAdd]
genusToAdd <- unlist(strsplit(namesToAdd, "_"))[
which(1:length(strsplit(namesToAdd, "_")) %% 2 == 1)
]
phylogenyTraitsAdd <- phylogenyTraits
for (add in 1:length(namesToAdd)) {
cat(paste("\rADDING SP TO GENUS IN PHYLOGENY", add, "/", length(namesToAdd), "\r"))
phylogenyTraitsAdd <- add.species.to.genus(
tree = phylogenyTraitsAdd,
species = namesToAdd[add],
genus = genusToAdd[add],
where = "root"
)
}
return(phylogenyTraitsAdd)
}