如何模拟所需数量的生死树?

How to simulate desired number of birth-death trees?

我想知道如何更改以下代码以获得所需数量的树。我知道一个人可以 运行 模拟一定时间,但我需要模拟 100 棵树,所有树都有 50 个现存物种。所以如果我尝试

Library(phytools)
Trees <- pbtree(b=1, d=0.3 , n=50, scale=NULL, nsim=100, type="continuous", extant.only=TRUE)

我得到 "tree returned as NULL",所以我想保持 运行ning 直到我有 100 棵树。

谢谢!

快速浏览后,树存储为树列表。

获取空树的数量

S<-0
index<-numeric()
for(i in 1:length(Trees)){if(is.null(Trees[[i]])){
   S<-S+1
   index<-c(index,i)}
 }

生成树并将 null 替换为非 null 树

while(S>0){
tree<-pbtree(b=1, d=0.3 , n=50, scale=NULL, nsim=1, type="continuous", extant.only=TRUE)
if(!is.null(tree)){
    Trees[[index[1]]]<-tree
    S<-S-1
    index<-index[-1]
    }
}

您可能想要模拟更多树,然后保留前 100 个非空树

library(phytools)
allTrees <- pbtree(b=1, d=0.3 , n=50, scale=NULL, 
    nsim=200, type="continuous", extant.only=TRUE)
trees100 <- head(allTrees[!unlist(lapply(allTrees , is.null))], 100)