LoginSignup
1
1

More than 5 years have passed since last update.

tbl_df を使ってラップしたdata.frameをbnlearnに食わすとエラー

Last updated at Posted at 2017-07-24

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で同じことで困っている人がいましたが、最初見たときは、回答に再現しないよ、と書いてあって、空振りと思いました。

Error in bnlearn: variable has 5 levels but I get the error “ variable arb_review must have at least two levels.”

結局

でも最後にぼそっと、tibbleになったdata.frameを使うな!と書いていました。
これでした。ラッパーを外して、data.frameに戻したらうまく動きました!

追記

どうも同じような不具合がdealパッケージでも起こることがわかりました。基本tbl_dfなどは使わないほうがよさそうですね。。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1