我想知道如何更改下面的代码,以便获得所需的树数。我知道人们可以在一定时间内进行模拟,但我需要模拟让我们说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棵树。
谢谢!
答案 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)}
}
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]
}
}