如何模拟所需数量的生死树?
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)
我想知道如何更改以下代码以获得所需数量的树。我知道一个人可以 运行 模拟一定时间,但我需要模拟 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)