@jeremycg が次のコードの開発を手伝ってくれましたが、これを再度投稿します。それは機能しますが、私が望んでいたものではありません! 簡単なリマインダー: ガンマと呼ばれる係数に関して測定する必要がある一連の木があります。各木の値が定義された範囲内にない場合は、その値が定義された範囲内になるまで再スケーリングされます...この例を試してみましょう:
library(ape)
library(phytools)
trees<- pbtree(b=1, n=100, nsim=50)
fixmytrees <- function(tree, rescaleamt = NULL){
if(is.null(rescaleamt)){
rescaleamt <- sample(seq(from = 0.1, to = 0.9, by = 0.1), 1)
}
if(is.na(gammaStat(tree))){return("bad tree")}
if(gammaStat(tree) < 6){
return(tree)
} else {
return(rescale(tree, model ="delta", rescaleamt))
}
}
z<-lapply(tree, fixmytrees)
#The script does rescale trees but they are not extreme enough. In this case if you try
gammaStat(z[[]]) #You would probably see values lower than 6 and sometimes NA!!!
ありがとう!