我正在尝试在R上创建一个简单的热图。我的dataframe看起来像这样:
% 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创建一个热图,但导致错误(如上所述)。在本论坛上搜索以前的问题时,无法找到明确的答案。
编辑1:
'dput'的输出:
dput(df):
structure(c("observation_1", "observation_2", "observation_3",
"observation_4", "observation_5", "observation_6", "observation_7",
"observation_8", "observation_9", "observation_10", "observation_11",
"observation_12", "observation_13", "observation_14", "0.3582493",
"0.3649155", "0.2787633", "0.1632812", "0.8172198", "0.8823394",
"0.7073695", "0.9631311", "0.0157979", "0.2150821", "0.9037031",
"0.8703745", "1.1638085", "1.0331578", "2.7990972", "2.7087826",
"3.3461678", "6.5408849", "1.1854820", "1.1648704", "1.3596062",
"1.0350262", "9.8674869", "3.4583656", "1.0800011", "1.1129240",
"0.9125615", "0.9621767"), dim = c(14L, 3L), dimnames = list(
NULL, c("X", "X..changes.site_1", "X..changes.site_2")))
型
“is.numeric(df[,1])”的输出:
is.numeric(df[,1]):
Error in df[,1]: object of type 'closure' is not subsettable
编辑2:删除不必要的标签
1条答案
按热度按时间yebdmbv41#
我也试图复制你的结果和类似艾伦的评论。对我来说,代码工作。
你能试着检查一下每一栏的类型吗?使用例如
typeof(df[, "changes.site_1"]). It should be double for the
changes.site changes.site_2`。如果没有,您可以使用字符串
我假设你的第一列是行名称,否则你需要使它们成为行名称。我希望这有帮助!