我是系统发育分析的新手,我使用ape
库来分析来自28个不同物种的34种灵长类动物的神经解剖学特征。我用10ktree来获得一致的系统发育树(有28个提示)。但是,我无法将表型和树结合起来,因为观察的数量与提示的数量不匹配。我应该使用切除术将尖端分成多个受试者吗?
到目前为止,这是我的代码:
tree <- read.nexus("10ktree.nex")
pheno <- read.csv("pheno.csv")
BrainVolume <- pheno$BrainVolume
names(BrainVolume) <- pheno$GenBank.Name
pic.BrainVolume <- pic(BrainVolume, tree)
我收到以下错误:
Error in pic(BrainVolume, tree) :
length of phenotypic and of phylogenetic data do not match
感谢您的帮助!
答案 0 :(得分:0)
正如我在评论中所说,Emmanuel Paradis的书“用R分析系统发育和进化”第二章(2012)中的第6.1.10章“种内变异”在这个问题上有确切的信息。本章讨论了几种方法。这是一个基于Felsenstein(2008)的研究,它将每个物种的单个个体系统发育对比方法扩展到多个个体。
每种物种的单个人呼叫是pic.BrainVolume <- pic(BrainVolume, tree)
,其中BrainVolume
是一个向量。对于多个体的方法,BrainVolume必须是一个列表,其中一些条目可以具有表示同一物种的多个个体的值的向量。我使用
pheno
文件的“分组”版本
grouped<-split(pheno,pheno$GenBank.Name)
接下来,lapply
列出BrainVolume
表型列表:
BrainVolume<-lapply(grouped,"[[","BrainVolume")
最后,使用实现Felsenstein方法的pic.ortho
函数:
pic.SA<-pic.ortho(SA,tree,intra=TRUE)
结果对比可以与原始pic
命令一起使用。
<强>参考强>
Felsenstein J(2008)“具有抽样误差和种内变异的比较方法:对比重访和修订”美国自然主义者171:713--725