2017-08-15 7 views
0

ここでは何が欠けていますか?すでにワークスペースをきれいにしてセッションを再起動しました。ここに私の問題の原因と思われるコードの部分があります。R描画 - サブグラフ関数エラー:ノードは文字列のベクトルでなければなりません

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) 

をそして、私はこのエラーを取得する:私は、その内のすべてのノードは、グラフ平均保存し、文字列のベクトルとして保存され、関連するノードを計算し、強度オブジェクトからベイジアンネットワークアークstrenghtsを平均化しようとしています:私は、このエラーメッセージがスローされた場所のためのソースコードをチェックし

[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-statemを見つけました:これは私の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. 

です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の方がむしろ新しく、ちょうど昨日の=<-の違いを知ることができましたので、あまりにも厳しくはありません。

+0

私は問題が行 'nodes.averaged = ...'になる可能性があると思う。あなたは 'unlist'を使います。これは' averaged'が行列であるので何でもします。 'nodes.averaged = unique(c(arcs(averaged)))'や 'as.vector'の代わりに' c'を使うか、 'nodes(averaged)'を使って直接ノードを得ることができます。これがうまくいかない場合、再現可能な例を追加できますか? – user20650

+0

これは私のソリューションよりも優れています。なぜなら、最初にベクトルのNAデータに問題が生じないからです。私の場合は 'unique(c(arcs(averaged)) ')の代わりに' nodes(averaged)'を使うようになっていましたが、複数のネットワークを格納するDatastructure – Phise

答えて

1

私の間違いが見つかりました...文字列のベクトルには空のデータはありません。これはトリックを行った:

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

なぜあなたのノードのいくつかがNAになるのですか? – user20650

+0

彼らはそうしてはならないし、そうではありません。 relevant.nodes = nodes(平均)[サプリー(ノード、次数、オブジェクト=平均化された)> 0]で「マージ」されたときに、何とかベクトルを台無しにしました。 – Phise

関連する問題