如何修复 R heatmaply() 中的 "Factor level duplicated" 错误?

How to fix "Factor level duplicated" Error in R heatmaply()?

我正在尝试根据该矩阵制作热图:

  1     2     3     4     5     6     7
C  6211  7608  8089 10514  7363  5375  7268
L  2459  2904  2573  3049  2221  1652  2311
N  3173  4213  3025  4324  2864  1524  2363
S    37    74   141    94    68    48    88
W  1223  1259   914  1691   874   607   912

我做到了:

c1 <- table(kat_data$delay_code, kat_data$DayOfWeek)
c1 <- as.matrix(c1)
c1

现在我正在尝试使用 heatmaply() 制作热图,但出现错误:

Error in levels<-(tmp`, value = as.character(levels)) : factor level [6] is duplicated

下面的部分热图代码:

p<-heatmaply(c1, 
             dendogram = "none", 
             xlab = "", ylab = "", 
             main = "",
             scale = "column", 
             margins =c(60,100,40,20),............

我应该怎么做才能让它发挥作用?我读了很多关于这个错误的问题,我发现我需要提供唯一的数据,但我不知道在哪里以及如何做。 你能帮帮我吗?

我们可以将其转换为 data.frame 并且错误会消失,因为这是 data.frame

中不允许的重复行名的情况
library(heatmaply)
heatmaply(as.data.frame.matrix(table(mtcars[c('cyl', 'vs')])))

此外,通过用 as.matrix 包装,table class 仍然存在

m1 <- as.matrix(table(mtcars[c('cyl', 'vs')]))
str(m1)
# 'table' int [1:3, 1:2] 1 3 14 10 4 0
# - attr(*, "dimnames")=List of 2
#  ..$ cyl: chr [1:3] "4" "6" "8"
#  ..$ vs : chr [1:2] "0" "1"

这就是造成问题的原因,因为 ?heatmaply 建议 'x' 为

x- can either be a heatmapr object, or a numeric matrix Defaults to TRUE unless x contains any NAs.

因此,我们可以将 class 转换为 matrix

class(m1) <- "matrix"

现在,应该可以了

heatmaply(m1)

请注意,tablematrix 对象都可能导致与 OP 的 post

中类似的错误
heatmaply(table(mtcars[c('cyl', 'vs')]))

Error in levels<-(*tmp*, value = as.character(levels)) : factor level [4] is duplicated

heatmaply(as.matrix(table(mtcars[c('cyl', 'vs')])))

Error in levels<-(*tmp*, value = as.character(levels)) : factor level [4] is duplicated