r语言 - "length of 'dimnames' [1] not equal to array extent"的 querygrain() 问题



为同样遇到以下错误的其他人查看答案

array(values, dimnames = dn)出错:'dimnames'的长度[1]不等于数组范围

我没有找到任何适用于我的帖子,因为我的数据不在数据框架中,而是在我认为的图形中。有人知道为什么会发生这种情况吗?

我的代码如下

library(Rtools)
library(RBGL)
library(graph)
library(pcalg)
library(dplyr)
library(bnlearn)
library(Rgraphviz)
library(ggdag)
library(ggplot2)
library(ellipsis)
library(varhandle)
library(gRain)
P1 = 0.0940594059405941
P2 = 0.0033003300330033
P3 = 0.0214521452145215
P4 = 0.0602310231023102
P5 = 0.00907590759075908
P6 = 0.033003300330033
P7 = 0.0132013201320132
P8 = 0.765676567656766
P9 = 0.0808580858085809
P10 = 0.0115511551155116
P11 = 0.0585808580858086
P12 = 0.849009900990099
P13 = 0.0899339933993399
P14 = 0.0313531353135314
P15 = 0.00247524752475248
P16 = 0.876237623762376
P17 = 0.114686468646865
P18 = 0.0643564356435644
P19 = 0.0066006600660066
P20 = 0.814356435643564
P21 = 0.179042904290429
P22 = 0.820957095709571
ABCA9 = cptable(~ABCA9|BTNL9:IGSF10, values=c(P1,P2,P3,P4,P5,P6,P7,P8),levels=tf)
IGSF10 = cptable(~IGSF10|class, values=c(P9,P10,P11,P12),levels=tf)
class = cptable(~class|CD300LG, values=c(P13,P14,P15,P16),levels=tf)
CD300LG = cptable(~CD300LG|BTNL9, values=c(P17,P18,P19,P20),levels=tf)
BTNL9 = cptable(~BTNL9, values=c(P21,P22),levels=tf)
plist2 = compileCPT(list(ABCA9,IGSF10,class,CD300LG,BTNL9))
net1=grain(plist2)
par(mar=c(1,1,1,0))
plot(net1$dag)

当我尝试运行以下查询以查找概率时,问题发生了:

querygrain(net1, nodes=c('ABCA9','IGSF10','BTNL9','CD300LG'),type=joint)
querygrain(net1, nodes=c('class', 'BTNL9','CD300LG'),type=conditional)

否则,如果我做这样的查询,我不会得到任何错误:

querygrain(net1, nodes=c('class', 'CD300LG'),type=conditional)

我不认为这个错误只会发生,因为我之前没有在我的贝叶斯图中指定那些特定的概率,因为在我的实践中,他们能够执行像我所做的那样的查询而没有得到一个错误。

只需要重新启动R会话并更改tf = c("t", "f"),这也是我所做的工作。之前我有tf = c(1,0)

最新更新