代码之家  ›  专栏  ›  技术社区  ›  antecessor

带有“x”的heatmap错误必须是数字矩阵

  •  2
  • antecessor  · 技术社区  · 7 年前

    我知道这个问题可能是重复的,但是我尝试了一些在这个论坛上发布的解决方案,但没有成功,这就是我为什么要在这里发布它。

    让我们从我的数据集开始,使其具有可复制性。

    dataset <- structure(list(Comparison = c("SH vs SAP", "SH vs NEA", "SH vs ERE", 
    "SH vs ERH", "SH vs NAL", "SAP vs NEA", "SAP vs ERE", "SAP vs ERH", 
    "SAP vs NAL", "NEA vs ERE", "NEA vs ERH", "NEA vs NAL", "ERE vs ERH", 
    "ERE vs NAL", "ERH vs NAL"), DC1 = c(NA, NA, NA, NA, NA, 1, 1, 
    1, NA, 1, 1, NA, 1, NA, NA), DC2 = c(NA, NA, NA, NA, NA, 1, 1, 
    1, NA, 0, 0, NA, 1, NA, NA), DC3 = c(1, 1, 1, 1, 1, 1, 1, 1, 
    0, 1, 0, 0, 1, 0, 1), DC4 = c(1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
    0, 1, 1, 1), DC5 = c(0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 
    1), DC6 = c(0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1), DC7 = c(0, 
    1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1), DC8 = c(0, 1, 0, 1, 
    1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1), DC9 = c(0, 0, 0, 0, 1, 0, 0, 
    0, 0, 0, 1, 1, 0, 0, 0), DC10 = c(1, 1, 0, 1, 1, 0, 0, 0, 0, 
    0, 1, 0, 1, 0, 0)), .Names = c("Comparison", "DC1", "DC2", "DC3", 
    "DC4", "DC5", "DC6", "DC7", "DC8", "DC9", "DC10"), class = "data.frame", row.names = c(NA, 
    15L))
    

    我已经尝试将数据集更改为矩阵,正如其他文章中建议的那样。但是,它总是给出相同的错误

    heatmap(dataset)
    heatmap(as.matrix(dataset))
    
    Error in heatmap(dataset) : 
      'x' must be a numeric matrix
    
    Error in heatmap(as.matrix(dataset)) : 
      'x' must be a numeric matrix
    

    我试图将列转换为数字,但错误仍然存在。我搬走的时候也是这样 DC1 DC2 包含以下内容的列 NA 价值观。

    找到问题有什么帮助吗?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Zheyuan Li    7 年前

    dataset[,1] is character so as.matrix(dataset) is a character matrix.这就解释了:

    < Buff行情>

    'x'必须是一个 数字->strong>矩阵

    < /块引用>

    你可能想要

    heatmap(as.matrix(dataset[,-1]))
    < /代码> 
    
    

    < Buff行情>

    我怎样才能包括右边行的名称呢?

    < /块引用>

    将矩阵的comparisonvariable设置为rownames

    m<-as.matrix(dataset[,-1])
    行名称(M)<-数据集$比较
    热图(M)
    < /代码> 
    
    

    因此,您真正的问题是将列中的值转换为r中现有数据帧中的行名称,尽管问题是通过heatmap>呈现的。

    “X”一定是A数字的矩阵

    你可能想要

    heatmap(as.matrix(dataset[, -1]))
    

    enter image description here

    我怎样才能包括右边行的名称呢?

    设置Comparison变量作为rownames矩阵的:

    m <- as.matrix(dataset[, -1])
    rownames(m) <- dataset$Comparison
    heatmap(m)
    

    enter image description here

    所以你真正的问题是Convert the values in a column into row names in an existing data frame in R尽管问题是heatmap.