2015-12-14 13 views
5

Ich versuche, einen MCA auf einer Datentabelle mit FactoMineR auszuführen. Es enthält nur 0/1 numerische Spalten, und seine Größe ist 200,000 * 20.Was bedeutet "Argument", das "nicht logisch" ist, in FactoMineR MCA?

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

bekomme ich folgende Fehlermeldung:

Fehler bei der (fehlenden oder (lapply (listModa, is.numeric))): Argument zu 'was' ist nicht logisch

Ich wusste nicht wirklich, was ich mit diesem Fehler machen soll. Dann habe ich versucht, jede Spalte zu Zeichen drehen, und alles hat funktioniert. Ich dachte, es jemand anderem nützlich sein könnte, und dass vielleicht jemand in der Lage wäre, den Fehler, mir zu erklären;)

Prost

Antwort

1

Es ist schwer zu sagen, ohne weitere Eingabe, aber was kann man tun, ist:

  • die Funktion finden, wo der Fehler (via traceback()) aufgetreten ist,
  • einen Haltepunkt und debuggen Set:

    trace(tab.disjonctif, browser) 
    

Ich habe die folgenden (offline) den Namen tab.disjonctif zu finden:

  • das Paket auf dem Spiegel CRAN gefunden on GitHub
  • Search für diesen bestimmten Ausdruck, dass der Fehler
0
gibt

Ich habe gerade angefangen, R gestern zu lernen, aber der Fehler kommt von der Tatsache, dass der MCA für categorical data ist, deshalb können Ihre Daten nicht numerisch sein. Um genau zu sein, wird vor der MCA ein "tableau disjonctif" (Entschuldigung, ich kenne das Wort auf Englisch: Complete disjunctive matrix) erstellt. So FactomineR wird mit dieser Funktion:

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

wo ich denke, es ist für kategorische Werte suchen, der auf einen numerischen Wert angepasst werden kann (wie Y = 1, N = 0).

Für andere; Seien Sie vorsichtig: für R kategorische Daten beziehen sich auf factor Typ, also even if you have characters you could get this error.

1

Sind die Klassen Ihrer Variablen Zeichen oder Faktor? Ich hatte dieses Problem. Meine Lösung bestand darin, alle Variablen in einen Faktor zu ändern.

#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

gleiche Problem wie gut und zu Faktor Wechsel lösen nicht meine Antwort entweder, weil ich jede Variable als ergänzende gesetzt hatte.

Was habe ich erste Transformation war meine numerischen Daten Faktor:

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,]) 

Dennoch würde es nicht funktionieren. Aber mein zweites Problem war, dass ich JEDER Faktor als zusätzliche Variable einfügte! Also diese:

Würden die gleichen Fehler generieren, aber diese funktioniert:

MCA(Xfac, graph=TRUE) 

Nicht die Daten zu transformierenden Faktoren auch das Problem erzeugt.

Ich habe die gleiche Antwort auf ein verwandtes Thema geschrieben: https://stackoverflow.com/a/40737335/7193352

Verwandte Themen