длина 'dimnames' [2] не равна экстенту массива при использовании функции corrplot из матрицы, считанной из файла csv

Я хочу прочитать данные из файла csv, сохранить его как матрицу и использовать для визуализации.

data<-read.table("Desktop/Decision_Tree/cor_test_.csv",header = F,sep = ",")

data
V1    V2    V3   V4  V5     V6
1  1.00  0.00  0.00 0.00  0.00  0
2  0.11  1.00  0.00 0.00  0.00  0
3  0.12  0.03  1.00 0.00  0.00  0
4 -0.04  0.54  0.32 1.00  0.00  0
5 -0.12  0.57 -0.09 0.26  1.00  0
6  0.21 -0.04  0.24 0.18 -0.21  1

Хорошо пошло. Но потом:

corrplot(data, method = 'color', addCoef.col="grey")

Он сказал, что:

Ошибка в матрице (unlist (value, recursive = FALSE, use.names = FALSE), nrow = nr,: длина 'dimnames' [2] не равна экстенту массива

Я не знаю, как это решить.


person Jeffrey Chen    schedule 12.04.2017    source источник


Ответы (1)


corrplot требуется матрица, я предполагаю, что ваши данные - это фрейм данных. Вместо этого используйте as.matrix(data).

Пример:

## Your data as data frame:
data <- structure(list(V1 = c(1, 0.11, 0.12, -0.04, -0.12, 0.21), V2 = c(0, 
                    1, 0.03, 0.54, 0.57, -0.04), V3 = c(0, 0, 1, 0.32, -0.09, 0.24
                ), V4 = c(0, 0, 0, 1, 0.26, 0.18), V5 = c(0, 0, 0, 0, 1, -0.21
                ), V6 = c(0, 0, 0, 0, 0, 1)), .Names = c("V1", "V2", "V3", "V4", 
                "V5", "V6"), row.names = c(NA, -6L), class = "data.frame")

## Using the data frame results in an error:
corrplot::corrplot(data, method = 'color', addCoef.col = "grey")
# Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr,  : 
#   length of 'dimnames' [2] not equal to array extent

## Using the matrix works:
corrplot::corrplot(as.matrix(data), method = 'color', addCoef.col = "grey")

corrplot

person ikop    schedule 12.04.2017
comment
Очень признателен за решение. Работает отлично. Большое спасибо. - person Jeffrey Chen; 12.04.2017
comment
Я адаптировал код из приведенного выше сообщения и запустил его на основе своих данных. Но у меня такая ошибка: матрица не в [-1, 1]! - person Xian Zhao; 31.05.2020
comment
Сначала вам нужно преобразовать ваши данные в корреляционную матрицу, например с cor (df). (извините, комментарий, вероятно, слишком поздно, чтобы помочь вам @XianZhao, но оставлю на случай, если это поможет кому-то другому). - person Gabriel; 22.10.2020
comment
Спасибо, @Gabriel - person Xian Zhao; 05.01.2021