以下代码模拟了许多系统发育树(此处为100)。但是由于灭绝的偶然事件,一些树为空。我需要验证这些NULL树,将其从输出对象中删除,然后从其余树中选择N棵树中的x棵。
library(phytools)
Trees<- pbtree(b=0.6, d=0.2, n=200, t=NULL, scale=NULL, nsim=100, type="continuous", extant.only=TRUE)
假设上面的代码返回3个NULL,而我需要(假设)从100-3 = 97棵树中选择50棵。它可以是前50棵树,也可以是其他任何树。我不确定循环是否可以为我做到这一点。
谢谢你的帮助!
因为R将对象存储为向量,所以循环通常并不是特别有效:“应用”函数族通常工作得更快。
在这里您可以尝试:
null.trees <- sapply(Trees, is.null)
valid.trees <- Trees[!null.trees]
if (length(valid.trees) < 50) {
warning('Not enough trees!'!
} else {
valid.trees[1:50]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句