2022.08.24【R语言】|pheatmap外接函数调用时不能有NA/NaN/Inf(arg10)报错问题及解决方案

目录

  • 项目场景
  • 问题描述
  • 原因分析
  • 解决方案
  • 总结

项目场景

差不多接近4个月没有写博客,不能说个人没有学习新的知识,由于疫情反复,防疫政策让整个人也比较浮躁。最近部门有新同事入职,自己也接了新的业务,忙起来反而觉得该把遇到的问题整理记下,帮助新人学习。今天就把16S里面绘制物种丰度的热图报错进行整理

问题描述

在已确认脚本没有问题、已经绘制过多个16S物种丰度项目热图的情况下发生报错。

Error in hclust(d, method = method) : 
  外接函数调用时不能有NA/NaN/Inf(arg10)

原因分析

查看输入的表达矩阵,虽然样品存在表达相同的情况,但至少没有NA值。
在这里插入图片描述
基本可以确认数据在分析过程中存在缺失,或者因为某种分析造成数据产生NA。

查询资料,发现有人提到pheatmap的归一化问题(参考博客)。他的解决方案是删除所有为零的行,但是我数据并不为零。或许归一化产生NA并不是因为0,而是因为同一行的所有样品表达一致,归一化的公式不支持而产生NA。

我的R脚本是按照物种级别(门纲目科属种)循环进行绘制,为了验证上面那个结论,我进行挨个输出。发现前面(门纲目)只要有一行样品表达一致,都会报错。而到了科级,每一行表达水平都不一样了,报错也随之消失。
2022.08.24【R语言】|pheatmap外接函数调用时不能有NA/NaN/Inf(arg10)报错问题及解决方案_第1张图片

解决方案

  1. 去掉参数scale = "row"或者把row改成col
  2. 对于表达水平相同的行,可以删除或者进行微调(比如100,改成100.1或者99.9,满足归一化公式)

总结

这个问题其实说大不大,说小不小。经常会遇到一些“明明别人都能正常跑的脚本,到我这里就不行”的情况,希望这篇文章可以解决读者的问题。

你可能感兴趣的:(R语言,扩增子,r语言,开发语言)