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

R语言中如何子集化phyloseq对象以运行ANCOMBC?遇报错求助

解决ANCOMBC教程中atlas1006子集化报错问题

报错原因

atlas1006是**TreeSummarizedExperiment(TSE)**类型的S4对象,这类对象不能像普通数据框那样用$直接访问样本元数据,必须通过专门的colData()函数获取样本属性信息,这就是触发$ operator not defined for this S4 class错误的核心原因。

解决方案

方法1:直接对TreeSummarizedExperiment对象子集化

使用colData()访问样本元数据,筛选time == 0的样本:

data(atlas1006)
# 生成time为0的样本索引
sample_idx = colData(atlas1006)$time == 0
# 完成TSE对象子集化
tse = atlas1006[, sample_idx]

方法2:转换为phyloseq对象后子集化

如果需要处理phyloseq格式的对象,可以先将TSE转换为phyloseq,再用phyloseq专属的子集化函数:

data(atlas1006)
library(phyloseq)
# 将TSE对象转换为phyloseq对象
pseq = as(atlas1006, "phyloseq")
# 筛选time==0的样本
pseq_subset = subset_samples(pseq, time == 0)

验证子集化结果

可以通过以下代码确认子集是否正确生成:

# 查看TSE子集的样本数量
ncol(tse)
# 查看phyloseq子集的样本元数据
head(sample_data(pseq_subset))

后续ANCOMBC运行提示

ANCOMBC包支持直接输入TreeSummarizedExperiment对象,方法1得到的tse可以直接传入ancombc2()函数,无需额外格式转换:

library(ANCOMBC)
# 运行ANCOMBC(补充你的分组、协变量等参数)
result = ancombc2(data = tse, group = "你的分组列名", ...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:41:29