我在這裏丟失了什麼?我已經清理了工作區並重新啓動了會話。這是我的代碼似乎造成麻煩的一部分。我試圖從強度對象平均的貝葉斯網絡弧長處,然後保存的所有節點均圖,然後計算相關節點,保存爲字符串的載體:R blearn - 子圖函數錯誤:節點必須是字符串的向量
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.
這是我relevant.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
當我檢查的地方,在那裏此錯誤消息被拋出的源代碼,我發現如果-statem ENT(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很陌生,但仍然發現自己只是在昨天才瞭解=
和<-
之間的區別,所以請不要對我太苛刻。
我認爲問題可能是行'nodes.averaged = ...'。你使用'unlist'做任何事情,因爲'averaged'是一個矩陣。嘗試使用'nodes.averaged = unique(c(arcs(averaged)))'或'as.vector'來代替oc'c',或者您可以使用'nodes(averaged)'直接獲取節點。如果這不起作用,可以添加一個可重複使用的示例,比如使用其中一個包數據集 – user20650
這比我的解決方案更好,因爲它首先不會在矢量中創建NA數據。在我的情況下,它的工作原理是,使用'nodes(averaged)'而不是'unique(c(arcs(averaged)))',但是應該有一個數據結構存儲多個網絡('average'at'unique c(arcs(averaged)))''然後你必須使用'c'等 – Phise