2015-11-03 100 views
2

我在R中使用FactoMineR軟件包中的MCA()函數對大約160個變量的集合進行多重對應分析,結果大約有2000個觀察值。大約150個變量是連續的,所以我首先使用cut()函數將這些連續變量轉換爲分類變量,然後使用MCA()函數。R編程MCA()FactoMineR錯誤信息

我的代碼是像這樣很簡單:

library(FactoMineR) 

data<-read.csv('demographics.csv') 

for (i in 9:length(data)){ 

    temp<-unlist(data[i],use.names=FALSE) 

    data[i]<-cut(temp,breaks=5,labels=c('A','B','C','D','E')) 
} 

MC<-MCA(data,ncp=10,graph=TRUE) 

後,我運行代碼,我得到了以下錯誤消息。

Error in dimnames(res) <- list(attributes(tab)$row.names, listModa) : length of 'dimnames' [2] not equal to array extent 

我想知道爲什麼會出現這個錯誤,以及如何解決它。我的表格中沒有丟失數據,所有變量都是明確的。

如果有人遇到過類似的問題,並且願意幫忙,我會很感激。非常感謝。

回答

3

我之前有過這個錯誤,因爲函數需要變量作爲因子(並且我傳遞它的數據沒有完全轉換爲因子)。與許多其他R函數不同,即使所有列都是分類的,它也不會爲您轉換數據。

我不太清楚你的數據是什麼,但很可能一列或多列不是一個因素變量。如果您的列1到8已經是因素,那麼它可能在read.csv調用中;當你從csv中讀取字符串變量時,字符串變量將自動轉換爲一個因子,但數字變量不會。

+0

是的,將所有輸入變量轉換爲因子應該解決這個問題。 – ajrwhite