Ошибка с аргументом bnlearn: iamb(bn) или gs(bn)
Я пытался создать байесовскую сеть с функциями iamb(x) и gs(x). Но он показал "Ошибка в check.data(x): переменная MFYield должна иметь как минимум два уровня".
Вот мой код,
bn[sapply(bn, is.character)] <- lapply(bn[sapply(bn, is.character)], as.factor)
attach(bn)
это образец моих данных "бн":
str(bn)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 59 obs. of 42 variables:
$ MFYield : Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 1 1 ...
$ MWtA : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ MWtT : Factor w/ 2 levels "0","1": 2 2 2 2 1 2 2 2 2 2 ...
$ MClb : Factor w/ 2 levels "0","1": 2 2 2 2 2 1 1 1 1 1 ...
$ MPS : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ MTwU : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ MTwD : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 2 2 2 2 ...
$ MTwDAgent: Factor w/ 2 levels "0","1": 1 1 1 1 1 2 2 2 2 2 ...
bn.iamb = iamb(bn)
Ошибка началась здесь, когда я пытаюсь создать сеть. Ошибка в check.data(x): переменная MFYield должна иметь как минимум два уровня.
Я не уверен, что, потому что мои данные Tibble? Тиббл: 59 х 42 Когда я проверил, он сказал:
nlevels("bn$MFYield")
[1] 0
class(bn)
[1] "tbl_df" "tbl" "data.frame"
is.factor(bn$MFYield)
[1] ИСТИНА
Итак, я думаю, что мои данные уже являются фактором, но R не может обнаружить, что они уже имеют два уровня. И я не понимаю, почему?
Как я могу это исправить? Я совсем новичок в R, пожалуйста, помогите мне пройти через это.
Спасибо.