You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言调用pheatmap函数报'x' must be numeric错误如何解决?

解决pheatmap报错:'x' must be numeric

你的核心问题是输入pheatmap的矩阵不是数值型——哪怕关闭聚类,热图绘制也需要基于数值数据计算颜色映射,因此会触发相同错误。以下是具体解决步骤:

  • 第一步:检查数据类型
    先运行str(Data2)查看数据结构,如果输出显示chr(字符型)而非num(数值型),就说明数据类型不对。这通常是因为read_excel读取时,部分数值列被识别为字符型(比如Excel单元格格式异常、存在隐藏特殊字符),而直接用as.matrix(Data)会把整个矩阵转为字符型。

  • 第二步:转换为数值型矩阵
    修改代码,确保提取的表达量列全部转为数值型,再转为矩阵:

    library(readxl)
    library(pheatmap)
    
    setwd("~/Analysis")
    Data <- read_excel("mRNA_Expression.xlsx", sheet = "P")
    
    # 提取基因名作为行名,分离表达量列
    rownames(Data) <- Data[,1]
    Data2 <- Data[,-1]
    
    # 将所有表达量列转为数值型
    Data2 <- sapply(Data2, as.numeric)
    # 转为矩阵格式
    Data2 <- as.matrix(Data2)
    
    # 验证数据类型(可选)
    str(Data2)
    
    # 运行pheatmap
    pheatmap(Data2, cluster_rows = T, cluster_cols = F, legend = T)
    
  • 额外注意点
    你的示例数据里存在重复行名(多个Gene2),虽然这不是当前报错的原因,但后续绘制热图可能会出现警告或异常,建议提前处理:比如对重复基因的表达量取均值、中位数,或者给重复行名添加后缀(如Gene2_1、Gene2_2)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:27:45