Thank you Graham, Liam, and Emmanuel for your suggestions. Applying the .uncompressTipLabel did the trick for my code. If anyone is interested in using the code to identify the 95% HPD for a single node from a set of chronograms, you can find the code here (https://github.com/johnjschenk/Rcode/blob/master/NodeAgeDensity.R <https://github.com/johnjschenk/Rcode/blob/master/NodeAgeDensity.R>) or below.
~John library(ape) library(coda) #Function to estimate the age of a node given two members of a clade. AgeDensity <- function(phy, species1, species2){ NodeNumber <- mrca(phy)[species1, species2] ages <- branching.times(phy)[as.character(NodeNumber)] return(as.numeric(ages)) } #read in tree tree <- read.nexus(file="") #Apply function across the posterior distribution to obtain node ages. This will take some time to run, depending on the number of trees. It took me about 20 minutes. NodeAges <- unlist(lapply(.uncompressTipLabel(tree), AgeDensity, "species1", "species2")) #estimate the HPD interval for the node ages HPD <- HPDinterval(as.mcmc(NodeAges), prob = 0.95) #Density plot for 95% HPD plot(density(as.numeric(NodeAges[which(NodeAges > HPD[1, 1] & NodeAges < HPD[1, 2])])), main="", las=1, xlab = "Million of years before present", lwd = 2) ______________________________________________________________ John J. Schenk, Ph.D. Assistant Professor of Plant Biology Georgia Southern University Herbarium (GAS), Curator Department of Biology 4324 Old Register Road Georgia Southern University Statesboro, GA 30460-8042 Office: 2260 Biology Building Office phone: (912) 478-0848 Lab website: sites.google.com/a/georgiasouthern.edu/schenk Herbarium website: sites.google.com/a/georgiasouthern.edu/gasherbarium > On Apr 9, 2018, at 10:56 AM, Liam J. Revell <liam.rev...@umb.edu> wrote: > > Dear John. > > You could try running .uncompressTipLabel on the "multiPhylo" object. Let us > know if that works. > > All the best, Liam > > Liam J. Revell, Associate Professor of Biology > University of Massachusetts Boston > & Profesor Asociado, Programa de Biología > Universidad del Rosario > web: http://faculty.umb.edu/liam.revell/ > > On 4/9/2018 9:46 AM, jschenk wrote: >> Hi Folks, >> I have been banging my head against what appears to be an easy coding >> problem for a while now and haven’t been able to hack my way out of it. I >> am running a function to identify a posterior set of node ages for a >> particular node. The function I wrote works just fine, but when I use >> lapply to sample across a posterior distribution, I get the “not of class >> ‘phylo’” error, even when I input a single tree of class phylo. I have >> tried every typical solution (e.g., reassigning class), but haven’t >> identified a solution. Does anyone know a workaround? >> Please see the example code below. >> Thanks, >> John >> library(ape) >> #simulate a single tree with 20 tips >> simtree <- rtree(20) >> #Make sure the tree exists >> plot(simtree) >> #Function I wrote to find a node and then tell me the age of the node. I >> realize that the simulated tree is not ultrametric in this example, in real >> life it will be - ultrametric trees also result in the same error >> AgeDensity <- function(phy, species1, species2){ >> NodeNumber <- mrca(phy)[species1, species2] >> ages <- branching.times(phy)[as.character(NodeNumber)] >> return(as.numeric(ages)) >> } >> #check the class of the tree object, it will say that it is of class phylo >> class(simtree) >> #Run my function AgeDensity and it works just fine >> AgeDensity(simtree, "t3", "t15") >> #When I use the lapply function, I get an error that the object is not a of >> class phylo, although I already verified that it is of class phylo. >> lapply(simtree, AgeDensity, species1="t3", species2="t15") >> #here is the same analysis conducted with multiple trees >> multiTrees <- rmtree(20, 10) >> class(multiTrees) >> #I get the same error when I run my function across multiple trees >> lapply(multiTrees, AgeDensity, species1="t3", species2="t15") >> ______________________________________________________________ >> John J. Schenk, Ph.D. >> Assistant Professor of Plant Biology >> Georgia Southern University Herbarium (GAS), Curator >> Department of Biology >> 4324 Old Register Road >> Georgia Southern University >> Statesboro, GA 30460-8042 >> Office: 2260 Biology Building >> Office phone: (912) 478-0848 >> Lab website: sites.google.com/a/georgiasouthern.edu/schenk >> Herbarium website: sites.google.com/a/georgiasouthern.edu/gasherbarium >> [[alternative HTML version deleted]] >> _______________________________________________ >> R-sig-phylo mailing list - R-sig-phylo@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-sig-phylo >> Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/ [[alternative HTML version deleted]] _______________________________________________ R-sig-phylo mailing list - R-sig-phylo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-phylo Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/