我想通过R来对一组代谢组学数据绘制聚类热图,但在读取完数据后R一直提示Error in x - m : non-numeric argument to binary operator,通过class检验,各个列的类型也都是numeric,所以不知道该怎么修复bug了
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)
1.尝试过在excel里把数据都转换成numeric格式,但报错同样的信息
这个错误提示是因为某一列或多列的数据不是数值类型,导致运算不能正常进行,需要先将不符合数值类型的数据转化或删除。在使用pheatmap包时出现了错误,具体问题是因为在进行二进制运算(x-m)时,参与运算的x或m不是数值类型。建议检查df数据中是否存在非数值类型的列,并对这些列进行处理或删除。
你可以先检查一下数据,将不符合数值类型的数据删除或转化。可以使用 R 函数 as.numeric 或 as.double 对不符合数值类型的数据进行转化,例如:
data[ ,col] <- as.numeric(as.character(data[ ,col]))
要,聚类的时候是整个矩阵一起算的,代谢物名称就是非num了,首列要定义为行名