R绘制聚类热图时,提示Error in x - m : non-numeric argument to binary operator

问题遇到的现象和发生背景

我想通过R来对一组代谢组学数据绘制聚类热图,但在读取完数据后R一直提示Error in x - m : non-numeric argument to binary operator,通过class检验,各个列的类型也都是numeric,所以不知道该怎么修复bug了

原始数据截图

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

library(pheatmap)
library(openxlsx)

df <- read.xlsx(
  "E:\\工作文件\\开展的项目\\正在进行-20220221-硕士课题-self\\20210816-蜜蜂实验\\20220925-蛋氨酸、康宽及Mix饲喂蜜蜂及蜡螟\\已做-【出勤蜂急性饲喂】\\代谢组学\\20221201-正式第一次\\AFB-NEG-CH-MIX.xlsx",
  sheet = 5,
  )
View(df)
pheatmap(df,
         scale = "row",
         cellwidth = 3,
         cellheight = 2,
         fontsize_row = 2,
         fontsize_col = 3,
         angle_col = 45,
         border_color = "white",
         #main = "Heatmap - AFB-NEG"
         )
运行结果及详细报错内容
Error in x - m : non-numeric argument to binary operator
In addition: There were 50 or more warnings (use warnings() to see the first 50)

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

1.尝试过在excel里把数据都转换成numeric格式,但报错同样的信息

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

这个错误提示是因为某一列或多列的数据不是数值类型,导致运算不能正常进行,需要先将不符合数值类型的数据转化或删除。在使用pheatmap包时出现了错误,具体问题是因为在进行二进制运算(x-m)时,参与运算的x或m不是数值类型。建议检查df数据中是否存在非数值类型的列,并对这些列进行处理或删除。

你可以先检查一下数据,将不符合数值类型的数据删除或转化。可以使用 R 函数 as.numeric 或 as.double 对不符合数值类型的数据进行转化,例如:

data[ ,col] <- as.numeric(as.character(data[ ,col]))

要,聚类的时候是整个矩阵一起算的,代谢物名称就是非num了,首列要定义为行名