R blearn - 子图函数错误:节点必须是字符串的向量

时间:2017-08-15 21:12:38

标签: r bnlearn

我在这里缺少什么?我已经清理了工作区并重新启动了会话。这是我的代码中似乎造成麻烦的部分。我试图从强度对象平均贝叶斯网络弧度,然后保存该平均图的所有节点,然后计算相关节点,保存为字符串向量:

averaged = averaged.network (strength)
nodes.averaged = unique(unlist(arcs(averaged)))
relevant.nodes = nodes(averaged)[sapply(nodes.averaged, degree, object = averaged) > 0]
averagedNew = subgraph(averaged,relevant.nodes)

然后我收到此错误:

Error in check.nodes(nodes, graph = x, max.nodes = length(x$nodes)) : 
  nodes must be a vector of character strings, the labels of the nodes.

这是我的related.nodes:

[1] "V81"  "V97"  "V114" "V55"  "V93"  "V119" "V102" "V23"  "V24"  "V76"  "V67"  "V29"  "V33"  "V84"  "V89"  "V73" 
[17] "V82"  "V71"  "V45"  "V7"   "V21"  "V109" "V5"   "V41"  "V65"  "V118" "V6"   "V20"  "V100" "V15"  "V59"  "V94" 
[33] "V57"  NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA    
[49] NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA    
[65] NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA    
[81] NA     NA     NA     NA     NA     NA     NA     NA     NA     NA

当我检查该地方的源代码时,抛出此错误消息,我找到了if语句(Link

  # nodes must be a vector of character strings.
  if (!is(nodes, "character"))
    stop("nodes must be a vector of character strings, the labels of the nodes.")

并运行它:

(!is(relevant.nodes, "character"))

,结果是

[1] FALSE

有人有想法吗?我对R很陌生,仍然发现自己昨天才开始学习=<-之间的区别,所以请不要对我太苛刻。

1 个答案:

答案 0 :(得分:1)

我发现了我的错误......字符串向量不允许有任何空数据。这就是诀窍:

relevant.nodes = relevant.nodes[!is.na(relevant.nodes)]