Создание сравнительного объекта в 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, трудно понять, решает ли это проблему без воспроизводимого примера.

Другие вопросы по тегам