Создание сравнительного объекта в R из двух фреймов данных для сравнительной филогенетики
Я пытаюсь прочитать два кадра данных в сравнительный объект, чтобы я мог построить их, используя 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
2 ответа
Ошибка здесь в том, что я использовал файл Nexus, хотя ?comparitive.data
не указывает, какие объекты phylo он должен использовать, деревья newick, кажется, работают нормально, а файлы nexus - нет.
Это может происходить из вашего набора данных и вашей филогении, имеющей некоторые расхождения, которые 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, трудно понять, решает ли это проблему без воспроизводимого примера.