在R中从两个数据帧创建一个分区对象,用于比较系统发育

时间:2018-06-12 15:18:05

标签: r dataframe phylogeny

我试图将两个数据帧读入一个比较对象,以便我可以使用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 个答案:

答案 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文件却没有。