在 R 中创建热图时出错:x 必须是数字

问题描述 投票:0回答:1

我正在尝试在 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 创建一个热图,但导致了错误(如上所述)。在此论坛上搜索以前提出的问题时无法找到明确的答案。

r heatmap pheatmap complexheatmap heatmaply
1个回答
-1
投票

我也尝试重现你的结果,类似于艾伦的评论。对我来说,代码有效。

您可以尝试检查一下每一列的类型吗?使用例如

typeof(df[, "changes.site_1"]). It should be double for the 
changes.site_1
and
changes.site_2`。如果没有,您可以使用

将它们设为数字
df[, "changes.site_1"] <- as.numeric(df[, "changes.site_1"]])
df[, "changes.site_2"] <- as.numeric(df[, "changes.site_2"]])

我假设您的第一列是行名称,否则您需要将它们设为行名称。我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.