2014-01-15 22 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

調試:嘗試'昏暗(DF2)'和'用長度(dimnames(DF2))比較' –

回答

25

我認爲問題是,你是不是陰謀的數據幀相關矩陣。嘗試將最後一行改成這樣:

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

功能COR計算相關矩陣,這是你需要繪製

+0

哦,我還以爲你可以傳遞一個datframe到corrplot產生熱圖。在這種情況下,我真正想要的是什麼,還要在相關圖上繪製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包熱圖圖你應該通過你的data.framematrix也使用is.corr說法。

df2 <- as.matrix(df2) 

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

這個問題(從2014年)有一個非常高的答案,說基本上與你的一樣。 – Jake