使用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
相关产品推荐
相关产品推荐

