我试图将两个数据帧读入一个比较对象,以便我可以使用pgls绘制它们。
我不确定返回的错误意味着什么,以及如何摆脱它。
我的代码:
library(ape)
library(geiger)
library(caper)
taxatree <- read.nexus("taxonomyforzeldospecies.nex")
LWEVIYRcombodata <- read.csv("LWEVIYR.csv")
LWEVIYRcombodataPGLS <-data.frame(LWEVIYRcombodata$Sum.of.percentage,OGT=LWEVIYRcombodata$OGT, Species=LWEVIYRcombodata$Species)
comp.dat <- comparative.data(taxatree, LWEVIYRcombodataPGLS, "Species")
返回错误:
> comp.dat <- comparative.data(taxatree, LWEVIYRcombodataPGLS, 'Species')
Error in if (tabulate(phy$edge[, 1])[ntips + 1] > 2) FALSE else TRUE :
missing value where TRUE/FALSE needed
答案 0 :(得分:0)
这可能来自您的数据集,并且您的系统发育中存在一些comparative.data
难以处理的差异(通过查看错误消息)。
您可以尝试使用dispRity::clean.data
清除数据集和树:
library(dispRity)
## Reading the data
taxatree <- read.nexus("taxonomyforzeldospecies.nex")
LWEVIYRcombodata <- read.csv("LWEVIYR.csv")
LWEVIYRcombodataPGLS <- data.frame(LWEVIYRcombodata$Sum.of.percentage,OGT=LWEVIYRcombodata$OGT, Species=LWEVIYRcombodata$Species)
## Cleaning the data
cleaned_data <- clean.data(LWEVIYRcombodataPGLS, taxatree)
## Preparing the comparative data object
comp.dat <- comparative.data(cleaned_data$tree, cleaned_data$data, "Species")
但是,正如@MrFlick建议的那样,如果没有可重复的示例,很难知道是否能解决问题。
答案 1 :(得分:0)
这里的错误是我使用的是nexus文件,虽然?comparitive.data
没有指定它应该使用哪些phylo对象,但是newick树似乎工作正常,而nexus文件却没有。