【发布时间】:2018-10-16 00:02:59
【问题描述】:
我想执行热图。我将数据帧转移到矩阵。我在矩阵中的第一列包含 51 个字符格式的州名。因此,当我执行热图时会弹出一个错误(“X”必须是数字)。如果我将矩阵转换为数字,则所有状态都将转换为从 1 到 51 的数值。状态名称将更改为数字。我希望有人帮助我将字符列转换为数字,而列中没有任何值变化。 enter image description here 我收到以下错误:
> heatmap.2(matrix)
Error in heatmap.2(matrix) : `x' must be a numeric matrix
dput(matrix[1:20,1:5])
structure(c("AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE",
"FL", "GA", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA",
" 156023.01", " 934292.20", " 565543.16", " 859246.77", "1802826.03",
" 236048.04", " 277419.16", " 44170.06", " 364245.19", "3059883.80",
"1032052.28", " 49148.00", " 484355.76", " 103032.97", "1501399.16",
"1098716.37", " 536964.81", " 714912.96", " 930454.92", "1006184.61",
NA, " 647281.97", " 243467.03", " 222016.05", "1955376.54", " 284157.80",
" 546510.14", " 310209.01", " 238855.76", "3055374.94", " 620487.04",
" 52286.08", " 183689.95", " 101198.95", "2299302.42", " 682522.43",
" 203429.06", " 566182.29", " 434137.97", "1269701.60", " 279984.88",
" 1785117.72", " 1210217.08", " 1738388.11", "12313826.52", " 1033786.31",
" 1905870.34", " 1589936.20", " 1177198.27", " 7379680.11", " 3182089.09",
" 539865.15", " 907408.47", " 706547.91", " 5616722.28", " 2793763.32",
" 751262.24", " 2620593.80", " 3327343.31", " 3423941.61", " 277346.4",
" 3231424.9", " 1784411.7", " 2539940.3", "13107647.6", " 1623508.4",
" 2475804.7", " 1382151.2", " 1362240.3", "10431341.9", " 4514651.7",
" 1081821.1", " 1653629.7", " 594605.5", " 9147134.3", " 4121661.9",
" 1292330.2", " 3252592.8", " 3360762.2", " 4269284.1"), .Dim = c(20L,
5L), .Dimnames = list(NULL, c("Provider.State", "039 ", "057 ",
"064 ", "065 ")))
【问题讨论】:
-
这听起来像您有
factors,它们在转换为numeric之前被转换为它们的integer索引。试试as.numeric(as.character(...))看看是否有变化。 -
它不起作用。如果我在数据框中执行它,它将整个列更改为 NA。在矩阵中,值会发生变化。
-
有一个可重复的问题会有所帮助。这包括示例代码(包括列出非基础 R 包)、示例数据(例如,
dput(head(x))),并且您已声明您的预期输出是热图。参考:stackoverflow.com/questions/5963269、stackoverflow.com/help/mcve 和 stackoverflow.com/tags/r/info。 -
即使查看了链接,我仍然无法找到我的问题的答案。你能帮我提供它的代码吗?
-
这些链接不是为了帮助您找到问题的答案,这些链接旨在帮助您改进您的问题,以便我们可以帮助您回答您的问题。当我问“你的数据是什么样的”这个问题时,我不想知道它有
m行和n列......我想以某种有代表性的形式查看实际数据。如果您的数据有点大,那么(正如我之前建议的并且在两个链接中提到的)使用dput(head(x))。
标签: r