我正在尝试在 R 上创建一个简单的热图。 我的数据框如下所示:
% changes@site_1 % changes@site_2
observation_1 0.358249346 2.799098208
observation_2 0.364915472 2.708782649
observation_3 0.278763325 3.346167761
observation_4 0.16328117 6.540884852
observation_5 0.81721982 1.18541967
observation_6 0.882339386 1.164870413
observation_7 0.70736946 1.359606195
observation_8 0.963131146 1.035026205
observation_9 0.015797898 9.86748686
observation_10 0.215082099 3.458365581
observation_11 0.903703133 1.080001078
observation_12 0.870374479 1.11292402
observation_13 1.163808464 0.912561512
observation_14 1.033157819 0.962176714
我确保将加载的 df 转换为矩阵:
df <- as.matrix(df)
然后,输入热图语法:
heatmap(df)
但是,我得到了如下错误:
Error in heatmap(df) : 'x' must be a numeric matrix
我对该错误的最佳猜测是第一列包含字符串和数字。 解决此错误的最佳方法是什么? 谢谢你。
tl;dr 我尝试创建一个热图并转换为矩阵,然后期望 R 创建一个热图,但导致了错误(如上所述)。在此论坛上搜索以前提出的问题时无法找到明确的答案。
我也尝试重现你的结果,类似于艾伦的评论。对我来说,代码有效。
您可以尝试检查一下每一列的类型吗?使用例如
typeof(df[, "changes.site_1"]). It should be double for the
changes.site_1and
changes.site_2`。如果没有,您可以使用 将它们设为数字
df[, "changes.site_1"] <- as.numeric(df[, "changes.site_1"]])
df[, "changes.site_2"] <- as.numeric(df[, "changes.site_2"]])
我假设您的第一列是行名称,否则您需要将它们设为行名称。我希望这有帮助!