Создание сравнительного объекта в R из двух фреймов данных для сравнительной филогенетики - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь прочитать два фрейма данных в сравнительный объект, чтобы я мог построить их с помощью pgls.

Я не уверен, что означает возвращаемая ошибка и как избавиться от нееit.

Мой код:

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 ]

0 голосов
/ 13 июня 2018

Ошибка здесь в том, что я использовал файл nexus, хотя ?comparitive.data не указывает, какие объекты phylo он должен использовать, деревья newick, кажется, работают нормально, тогда как файлы nexus этого не делают.

0 голосов
/ 13 июня 2018

Это может быть связано с вашим набором данных и филогенией, имеющей некоторые несоответствия, с которыми 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, трудно понять, решает ли это проблему без воспроизводимого примера.

...