bnlearnでのエラー
bnlearnを使っていて、妙なエラーが出ました。
"... variable hoge must have at least two levels.”
bnlearnの構造学習を行う関数に入れる際にすべてのフィーチャーをfactor化する必要があったのですが、前後の処理をいろいろ変えていくうちに、このエラーが出始めました。
factor化は以下のように一括でやっています。
dataset[] <- lapply(dataset, as.factor)
変換後のデータを見ても、特にlevelが2を下回っているものはありません。
Stackoverflowのこのエントリを見て、levelが1のものを削除するのはできますが、そもそもそんな列はない!
Remove variables with factor level 1 - stackoverflow
x[, sapply(x, nlevels) > 1]
もう少し調べるとbnlearnで同じことで困っている人がいましたが、最初見たときは、回答に再現しないよ、と書いてあって、空振りと思いました。
結局
でも最後にぼそっと、tibbleになったdata.frameを使うな!と書いていました。
これでした。ラッパーを外して、data.frameに戻したらうまく動きました!
追記
どうも同じような不具合がdealパッケージでも起こることがわかりました。基本tbl_dfなどは使わないほうがよさそうですね。。。