如何修复 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)
请注意,table
或 matrix
对象都可能导致与 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
我正在尝试根据该矩阵制作热图:
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)
请注意,table
或 matrix
对象都可能导致与 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