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脚本是按照物种级别(门纲目科属种)循环进行绘制,为了验证上面那个结论,我进行挨个输出。发现前面(门纲目)只要有一行样品表达一致,都会报错。而到了科级,每一行表达水平都不一样了,报错也随之消失。
在这里插入图片描述

解决方案

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

总结

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆易青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值