2014-01-15 12 views
9

Ich brauche Hilfe bei der Interpretation einer Fehlermeldung mit Corrplot.Fehler bei der Verwendung von Corrplot

Hier ist mein Skript

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) 

Mein 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 

Fehlermeldung:

> 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: versuchen 'dim (DF2)' und vergleichen Sie mit 'Länge (dimnames (DF2))' –

Antwort

25

ich glaube, das Problem ist, dass Sie den Datenrahmen anstelle der verschwören Korrelationsmatrix. Versuchen Sie, die letzte Zeile, dies zu ändern:

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

Die Funktion cor berechnet die Korrelationsmatrix, das ist, was Sie

+0

Oh, ich dachte, Sie datframe in corrplot passieren könnte eine Heatmap zu erzeugen. Was ist wirklich das, was ich in diesem Fall gesucht habe, und auch die Werte der Datafram auf dem Korrelationsdiagramm zu plotten. Ich glaube, ich war auf dem falschen Weg ... Es funktionierte gut mit Ihrer Antwort, thx – jonas

+0

@jonas Froh, dass es funktioniert hat. Früher habe ich den gleichen Fehler gemacht. –

2

Eine weitere Möglichkeit ist es zu brechen in zwei Zeilen Code zeichnen müssen.

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

Ich würde eine einfache corrplot laufen (zum Beispiel corrplot.mixed (DF2)) stellen Sie sicher, es funktioniert, dann in die Feinabstimmung und Ästhetik zu bekommen.

1

Um die corrplot Paket für Heatmap Plots zu verwenden, sollten Sie Ihre data.frame einen matrix und auch die is.corr Argument übergeben.

df2 <- as.matrix(df2) 

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

Diese Frage (ab 2014) hat eine hoch aufzählige Antwort, die im Grunde dasselbe sagt wie Ihre. – Jake

Verwandte Themen