0

Rphylopars我正在尝试使用该包计算脂肪酸数据集和系统发育树之间的表型协方差矩阵。

我能够加载数据集和系统发育;但是,当我尝试运行测试时,我收到错误消息

类(树)<-“phylo”中的错误:尝试将属性设置为 NULL”

这是测试的代码

phy <- read.tree("combined_trees.txt")
plot(phy)
phy$tip.label

FA_data <- read.csv("fatty_acid_example_data.csv", header = TRUE, na.strings = ".")
head(FA_data)
str(FA_data)

PPE <- phylopars(trait_data = FA_data$fatty1_continuous, tree = FA_data$phy)

不确定还有哪些其他信息有助于解决问题。数据集和系统发育加载没有错误。

4

1 回答 1

0

在本教程中,树和特征数据由simtraits()函数联合模拟,因此两者最终都作为单个列表的元素。在您的情况下(这将是典型的真实数据情况),树和特征数据来自不同的来源,所以很可能您想要

PPE <- phylopars(trait_data = FA_data, tree = phy)

前提是FA_data包含species与 中的提示名称匹配的第一列phy,否则仅包含您要使用的数字数据(可能只有单列fatty_acid1)。

为了比较,返回的数据结构simtraits()如下所示(使用str()):

List of 4
 $ trait_data:'data.frame': 45 obs. of  5 variables:
  ..$ species: chr [1:45] "t7" "t8" "t2" "t3" ...
  ..$ V1     : num [1:45] 1.338 0.308 1.739 2.009 2.903 ...
  ..$ V2     : num [1:45] -2.002 -0.115 -0.349 -4.452 NA ...
  ..$ V3     : num [1:45] -1.74 NA 1.09 -2.54 -1.19 ...
  ..$ V4     : num [1:45] 2.496 2.712 1.198 1.675 -0.117 ...
 $ tree      :List of 4
  ..$ edge       : int [1:28, 1:2] 29 29 28 28 27 27 26 26 25 25 ...
  ..$ edge.length: num [1:28] 0.0941 0.0941 0.6233 0.7174 0.0527 ...
  ..$ Nnode      : int 14
  ..$ tip.label  : chr [1:15] "t7" "t8" "t2" "t3" ...
  ..- attr(*, "class")= chr "phylo"
  ..- attr(*, "order")= chr "postorder"
...

您可以看到它simtraits()返回一个列表,其中包含(除其他外)(1)一个数据框species第一列和其他列是数字,(2)系统发育树。

于 2021-08-30T18:01:22.580 回答