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

时间:2016-04-14 03:36:34

标签: r simulation phylogeny

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

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

我得到&#34;树返回为NULL&#34;,所以我想继续跑,直到我有100棵树。

谢谢!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

快速浏览一下后,树木将被存储为树木清单。

获取空树的数量

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

生成树并用非空树替换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]
    }
}