14

FactoMineR を使用してデータテーブルで MCA を実行しようとしています。0/1 の数値列のみが含まれ、そのサイズは 200.000 * 20 です。

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

次のエラーが表示されます。

which(unlist(lapply(listModa, is.numeric))) のエラー: 'which' の引数が論理的ではありません

このエラーをどうしたらいいのか、私にはよくわかりませんでした。次に、すべての列を文字に変えようとしましたが、すべてうまくいきました。私はそれが他の誰かに役立つかもしれないと思った、そして多分誰かが私にエラーを説明できるだろう;)

乾杯

4

6 に答える 6

2

追加の入力なしで判断するのは困難ですが、できることは次のとおりです。

  • エラーが発生した関数を ( 経由でtraceback())見つけます。
  • ブレークポイントを設定してデバッグします。

    trace(tab.disjonctif, browser)
    

の名前を見つけるために次の(オフライン)を行いましたtab.disjonctif

  • GitHubの CRAN ミラーでパッケージを見つけました
  • エラーを与える特定の式を検索します
于 2015-12-14T14:26:10.537 に答える
0

これは、数値変数だけでは機能しません。数値のみを使用する場合は、PCA を使用します。それ以外の場合は、因子変数をデータ フレームに追加します。あなたの場合、変数をバイナリ因子に変更する必要があるようです。

于 2021-04-18T17:52:03.637 に答える
-1

同じ問題もあり、 factor に変更しても私の答えは解決しませんでした.

私が最初にしたことは、すべての数値データを factor に変換することでした:

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

それでも、うまくいかないでしょう。しかし、私の2番目の問題は、すべての要因を補助変数として含めたことです! だからこれら:

MCA(Xfac, quanti.sup = c(1:29), graph=TRUE)
MCA(Xfac, quali.sup = c(1:29), graph=TRUE)

同じエラーが生成されますが、これは機能します:

MCA(Xfac, graph=TRUE)

データを因子に変換しないことも問題を引き起こしました。

関連トピックに同じ回答を投稿しました: https://stackoverflow.com/a/40737335/7193352

于 2016-11-22T08:53:07.753 に答える