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

如何从Phyloseq对象中抽取指定大小的随机样本

解决Phyloseq对象随机抽样的可行方案

方案1:直接操作Phyloseq对象(最优解)

无需转换格式,直接通过样本名筛选实现抽样,能完整保留原对象结构:

  • 提取所有样本名:sample_names <- sample_names(your_phyloseq_obj)
  • 随机抽取n个样本名:selected_samples <- sample(sample_names, size = n)
  • 修剪对象保留选中样本:sampled_phyloseq <- prune_samples(selected_samples, your_phyloseq_obj)

如果原对象包含进化树(phy_tree),该方法会自动同步修剪树结构,无需额外操作。

方案2:转数据框抽样后重建Phyloseq对象(备用)

若必须通过数据框操作,按以下步骤执行:

拆分原对象组件

  • 提取OTU表:otu_df <- as.data.frame(otu_table(your_phyloseq_obj))
  • 提取样本信息:sample_df <- as.data.frame(sample_data(your_phyloseq_obj))
  • 提取分类注释表(若有):tax_df <- as.data.frame(tax_table(your_phyloseq_obj))
  • 随机选择目标样本名:selected_samples <- sample(rownames(sample_df), size = n)

筛选组件并重建对象

  • 筛选OTU表:sampled_otu <- otu_df[, selected_samples]
  • 筛选样本信息:sampled_sample <- sample_df[selected_samples, ]
  • 转换回Phyloseq原生格式并组合:
    # 重建OTU表,注意taxa_are_rows需与原对象一致,可通过taxa_are_rows(your_phyloseq_obj)查看
    new_otu <- otu_table(sampled_otu, taxa_are_rows = TRUE)
    # 重建样本信息
    new_sample <- sample_data(sampled_sample)
    # 重建分类注释表(若原对象有)
    new_tax <- tax_table(as.matrix(tax_df))
    # 组合为新Phyloseq对象
    sampled_phyloseq <- phyloseq(new_otu, new_sample, new_tax)
    
  • 若原对象包含进化树,需额外修剪并加入:new_tree <- prune_taxa(taxa_names(new_otu), phy_tree(your_phyloseq_obj)),将new_tree加入上述phyloseq()的参数列表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:57:16