You need to enable JavaScript to run this app. phyloseq执行plot_heatmap时报错NA values not allowed in 'd'问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

phyloseq执行plot_heatmap时报错NA values not allowed in 'd'问题咨询

报错原因及解决方案

核心结论

该报错与phyloseq对象是否包含进化树完全无关。
你当前使用的Bray-Curtis距离仅依赖物种丰度表计算,不需要进化树信息。报错的直接诱因是OTU表存在NA值、以及总丰度为0的空分类单元,导致距离矩阵计算时生成了无效NA值,后续排序步骤无法处理这类输入。

修复步骤

  • 处理OTU表中的NA值,未检出的分类单元NA可直接替换为0:
# 提取OTU表
otu_df <- as.data.frame(otu_table(phyloseqin.species))
# 全表替换NA为0
otu_df[is.na(otu_df)] <- 0
# 替换回phyloseq对象,taxa_are_rows参数根据你的OTU表结构调整,你当前的结构是325个分类单元为行,所以设为TRUE
otu_table(phyloseqin.species) <- otu_table(otu_df, taxa_are_rows = TRUE)
  • 过滤总丰度为0的空分类单元,避免距离计算警告:
phyloseqin.species <- prune_taxa(taxa_sums(phyloseqin.species) > 0, phyloseqin.species)
  • 处理完成后即可重新运行原有绘图代码。如果不需要按NMDS排序样本和分类,也可以直接指定排序规则,跳过距离矩阵计算步骤,避免触发同类报错:
# 示例:按样本名排序、按分类总丰度降序绘制热图
plot_heatmap(phyloseqin.species,  
             sample.label="Sample", 
             title = 'Relative abundance data', 
             taxa.label='Species',
             sample.order = sample_names(phyloseqin.species),
             taxa.order = names(sort(taxa_sums(phyloseqin.species), decreasing = TRUE)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:27:01