bnlearn参数出错:iamb(bn)或gs(bn)

时间:2017-07-12 04:42:16

标签: r bayesian-networks bnlearn

我尝试使用函数iamb(x)和gs(x)创建贝叶斯网络。 但它在check.data(x)中显示"错误:变量MFYield必须至少有两个级别。"

这是我的代码,

bn[sapply(bn, is.character)] <- lapply(bn[sapply(bn, is.character)], as.factor)

attach(bn)

这是我的数据样本&#34; bn&#34;:

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 x 42 当我检查时,它说:

nlevels("bn$MFYield")

[1] 0

class(bn)

[1]&#34; tbl_df&#34; &#34; TBL&#34; &#34; data.frame&#34;

is.factor(bn$MFYield)

[1] TRUE

所以,我认为我的数据已经是一个因素,但R无法检测到它已经有两个级别了。我不明白,为什么?

我该如何解决?我是R的新手,请帮我解决这个问题。

谢谢。

0 个答案:

没有答案