You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言ape包ace函数报错:对象'phy'非'phylo'类

祖先状态重建(ASR)分析中ape包ace函数报错:object "phy" is not of class "phylo"

我正在开展ASR(祖先状态重建)分析,尝试将二进制数据关联到已生成的进化树末端。但运行ape包的ace()函数时,持续出现错误:object "phy" is not of class "phylo"。

完整运行代码

install.packages("ape")
install.packages("phytools")
install.packages("tidyverse")
library(tidyverse)
library(ape)
library(phytools)

# 读取进化树
tree_path <- "/Users/USERNAME/Downloads/aeruginosa_galaxy_tree"
tree <- read.tree(tree_path)

# 读取CSV文件
csv_path <- "/Users/USERNAME/Desktop/Pf4_gene_results_modified.csv"
gene_data <- read.csv(csv_path, row.names = 1)  # 假设第一列是行名

# 筛选共同标识符
common_identifiers <- intersect(rownames(gene_data), tree$tip.label)

# 过滤基因数据和进化树
gene_data_filtered <- gene_data[common_identifiers, , drop = FALSE]
tree_filtered <- drop.tip(tree, setdiff(tree$tip.label, common_identifiers))


# 列出基因数据中不在进化树标签里的标识符
missing_in_tree <- setdiff(rownames(gene_data_filtered), tree$tip.label)

# 列出进化树标签中不在基因数据里的标识符
missing_in_gene_data <- setdiff(tree$tip.label, rownames(gene_data_filtered))

# 输出缺失标识符的数量
length(missing_in_tree)
length(missing_in_gene_data)

class(tree)

# 示例:对二进制数据使用简约模型
fit <- ace(tree, gene_data_filtered, type="discrete", model="parsimony")

# 绘制带祖先状态的进化树
plot(fit, tree)

内置数据集测试情况

使用ape包内置数据集测试时,同样出现该错误:

> data(bird.orders)
> fit_example <- ace(bird.orders$tree, bird.orders$trait, model="ER")
    Error in ace(bird.orders$tree, bird.orders$trait, model = "ER") : 
      object "phy" is not of class "phylo"

已尝试的解决方法

  • 重启RStudio环境
  • 新建R环境
  • 多次重装ape包

问题仍未解决,推测可能是ape包与RStudio环境的交互问题,但无法确定具体原因。


内容的提问来源于stack exchange,提问作者Michaelbucher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:10:00