2014-01-15 5 views
9

Мне нужна помощь в интерпретации сообщения об ошибке с помощью corrplot.Ошибка при использовании corrplot

Вот мой сценарий

install.packages("ggplot2") 
install.packages("corrplot") 
install.packages("xlsx") 

library(ggplot2) 
library(corrplot) 
library(xlsx) 

#set working dir 
setwd("C:/R") 
#read xlsx data into R 
df <- read.xlsx("TP_diff_frame.xlsx",1) 
#set column as index 
rownames(df) <- df$country 
#remove column 
df2<-subset(df, select = -c(country)) 
#round values to to decimals 


corrplot(df2, method="shade",shade.col=NA, tl.col="black", tl.srt=45) 

Мой df2: сообщение

> df2 
        a b  c  d  e f g 
Sweden   0.09 0.19 0.00 -0.25 -0.04 0.01 0.00 
Germany   0.11 0.19 0.01 -0.35 0.01 0.02 0.01 
UnitedKingdom  0.14 0.21 0.03 -0.32 -0.05 0.00 0.00 
RussianFederation 0.30 0.26 -0.07 -0.41 -0.09 0.00 0.00 
Netherlands  0.09 0.16 -0.05 -0.26 0.02 0.02 0.01 
Belgium   0.12 0.20 0.01 -0.34 0.01 0.00 0.00 
Italy    0.14 0.22 0.01 -0.37 0.00 0.00 0.00 
France   0.14 0.24 -0.04 -0.34 0.00 0.00 0.00 
Finland   0.16 0.17 0.01 -0.26 -0.08 0.00 0.00 
Norway   0.15 0.21 0.10 -0.37 -0.09 0.00 0.00 

ошибки:

> corrplot(df2, method="shade",shade.col=NA, tl.col="black", tl.srt=45) 
Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, : 
    length of 'dimnames' [2] not equal to array extent 
+1

Debugging: попробуйте 'тусклый (df2)' и сравнить с 'длины (dimnames (df2))' –

ответ

25

Я думаю, что проблема в том, что вы построение кадра данных вместо корреляционная матрица. Попробуйте изменить последнюю строку следующим образом:

corrplot(cor(df2), method="shade",shade.col=NA, tl.col="black", tl.srt=45) 

Функция кор вычисляет матрицу корреляции, которая является то, что вам нужно построить

+0

О, я думал, что вы могли бы пройти datframe в corrplot для создания Heatmap. На самом деле я искал в этом случае, а также для построения значений datafram на графике корреляции. Наверное, я был на неправильном пути ... Он отлично поработал с вашим ответом, хотя, thx – jonas

+0

@jonas Рад, что это сработало. Раньше я делал ту же ошибку в начале. –

2

Другой вариант заключается разбить его на две строки кода.

df2 <- cor(df, use = "na.or.complete") 
corrplot(df2, method="shade",shade.col=NA, tl.col="black", tl.srt=45) 

Я бы запустить простой corrplot (например corrplot.mixed (df2)) убедитесь, что он работает, а затем получить в тонкую настройку и эстетику.

1

Для того, чтобы использовать corrplot пакет для Heatmap участков вы должны передать ваши data.frame к matrix, а также использовать is.corr аргумент.

df2 <- as.matrix(df2) 

corrplot(df2, is.corr=FALSE) 
+1

Этот вопрос (с 2014 года) имеет очень высокий ответ, который говорит в основном то же, что и у вас. – Jake

Смежные вопросы