我知道这个问题可能是重复的,但我尝试了这个论坛上发布的一些解决方案,但没有成功,这就是我在这里发布它的原因。
让我们从我的数据集开始,使其可重现。
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我试图将列转换为数字,但错误仍然存在。当我删除包含NA值的DC1和DC2列时也是如此。
有什么帮助来发现问题吗?
发布于 2018-08-01 00:51:53
dataset[, 1]是字符,所以as.matrix(dataset)是字符矩阵。这解释了:
“x”必须是数字矩阵
你可能想要
heatmap(as.matrix(dataset[, -1]))

以及如何包含右侧行的名称?
将Comparison变量设置为矩阵的rownames:
m <- as.matrix(dataset[, -1])
rownames(m) <- dataset$Comparison
heatmap(m)

所以你真正的问题是Convert the values in a column into row names in an existing data frame in R,尽管这个问题是由heatmap提出的。
https://stackoverflow.com/questions/51618315
复制相似问题