2015-12-14 90 views
5

我試圖使用FactoMineR在數據表上運行MCA。它僅包含0/1的數值列,其大小爲200.000 * 20FactoMineR MCA中「哪個」不符合邏輯「的意思是什麼意思?

require(FactoMineR) 
result <- MCA(data[, colnames, with=F], ncp = 3) 

我得到以下錯誤:

錯誤中(不公開(lapply(listModa,is.numeric) )): 參數爲'which'不合邏輯

我真的不知道該如何處理這個錯誤。然後我試着把每一列都變成了字符,並且一切正常。我想這可能是別人有用的,也許有人能到錯誤解釋給我聽;)

乾杯

回答

1

這很難說沒有進一步的輸入,但你可以做的是:

  • 找到發生錯誤的功能(通過traceback()),
  • 設置斷點和調試它:

    trace(tab.disjonctif, browser) 
    

我以下的(離線)找到的tab.disjonctif名稱:

  • 實測值上CRAN鏡on GitHub
  • Search封裝該特定表達式,給出錯誤
0

我剛剛開始學習R,但錯誤來自事實,即MCA是categorical data,所以這就是爲什麼您的數據不能爲數字。然後更準確地說,在MCA之前創建一個「tableau disjonctif」(對不起,我不知道英文中的單詞:完全析取矩陣)。 所以FactomineR使用此功能:

https://github.com/cran/FactoMineR/blob/master/R/tab.disjonctif.R

凡我認爲這是尋找一種可以匹配的數值分類值(例如Y = 1,N = 0)。

對於其他人;請注意:對於R類別數據與factor類型有關,因此even if you have characters you could get this error

1

你的變量的類是字符還是因子?我有這個問題。我的解決方案是將al變量改爲factor。

#my data.frame was "aux.da" 
i=0 
while(i < ncol(aux.da)){ 
    i=i+1 aux.da[,i] = as.factor(aux.da[,i]) 
} 
-1

同樣的問題也並改變的因素並沒有解決我的回答要麼,,因爲我已經把所有的變量作爲補充

我所做的首先是改變我所有的數字數據係數:

Xfac = factor(X[,1], ordered = TRUE) 
for (i in 2:29){ 
    tfac = factor(X[,i], ordered = TRUE) 
    Xfac = data.frame(Xfac, tfac) 
} 
colnames(Xfac)=labels(X[1,]) 

不過,這是行不通的。但是我的第二個問題是我將EVERY因素作爲補充變量! 所以這些:

會產生相同的錯誤,但是這一次的工作原理:

MCA(Xfac, graph=TRUE) 

數據不轉化的因素也產生了問題。

我對相關主題發佈了相同的答案:https://stackoverflow.com/a/40737335/7193352