2016-11-11 8 views
0

親愛なるStackOverflowのコミュニティによってエッジを作成するには、R /ネットワーク解析 - どのようにノードの属性

私は現在のノードが企業/傘団体との連携ですが、「メンバー」として定義されている所属ネットワークをコンパイルするRを使用しています。現時点では、私のリストはまだ小さく、私は(私はIGRAPHを使用)のノードの位置に基づいて、次のようにエッジを作成することができます:私は、新しいノードを追加してい、しかし

g <- igraph::add_edges(g, c(1,51, 
          1,52, 
          1,53, 
          1,54)) 

を、最終的なネットワークが含まれます少なくとも500の組織つまり、新しいノードを追加するたびにノードの位置が変更される可能性があります。私は新しいノードを追加するたびにエッジをやり直すことができないので、ノードの名前を知っているエッジを追加する方法はありますか?ポジションとは反対に - - ノードの

名は属性として扱われ、私は名前を含めて上記と同じコマンドを使用しようとしましたが、それはうまくいきませんでした:

g <- igraph::add_edges(g, c(V(g)$name=="Company1", V(g)$name == "Umbrella2")) 

I方法上の任意の提案を位置を指定するのではなく名前を指定することでエッジを作成できますか?

答えて

0

私はあなたがas.numeric(V(g)["Company1"])を探していると信じています。

私は強くしかし、にR-スクリプトをお使いのネット​​ワーク構造を構築に対するをアドバイスします。小規模のネットワークであっても、データをExcelファイルに入力し、エッジリストとしてデータを読み取り、そこからigraphを作成するRスクリプトを作成しました。そうすれば、企業や組織を追加して、実際にどのようなデータが実際にネットワークに送られたかをより詳細に監視することができます。これは、最初に探しているものです。しかし、ここでそれを行うことは、質問の範囲外です。

名前を追加するノードに関しては、私はこの例を教育的なものとして書いています。

library(igraph) 

# Make an empty Bipartite graph 
g <- make_bipartite_graph(0, NULL, directed=TRUE) 
g <- delete_vertices(g, 1) 


# Create vertices of two different types: companies and umbrellas 
g <- add_vertices(g, 5, color = "red", type=TRUE, name=paste("Company", 1:5, sep="_")) 
g <- add_vertices(g, 2, color = "blue", type=FALSE, name=paste("Umbrella", 1:2, sep="_")) 

# In a bipartate graph edges may only appear BETWEEN verticies of different types. Companies 
# can belong to umbrellas, but not to each other. 

# Look at the types: 
ifelse(V(g)$type, 'Company', 'Umbrella') # true for companies, false for umbrellas 

# Lets add some edges one by one. This is what I believe you're asking for in the question: 
g <- add_edges(g, c(as.numeric(V(g)["Company_1"]), as.numeric(V(g)["Umbrella_1"]))) 
g <- add_edges(g, c(as.numeric(V(g)["Company_1"]), as.numeric(V(g)["Umbrella_2"]))) 
g <- add_edges(g, c(as.numeric(V(g)["Company_2"]), as.numeric(V(g)["Umbrella_1"]))) 
g <- add_edges(g, c(as.numeric(V(g)["Company_3"]), as.numeric(V(g)["Umbrella_1"]))) 
g <- add_edges(g, c(as.numeric(V(g)["Company_4"]), as.numeric(V(g)["Umbrella_2"]))) 
g <- add_edges(g, c(as.numeric(V(g)["Company_5"]), as.numeric(V(g)["Umbrella_2"]))) 

# Note that "Company_1" belongs to two umbrella organisations, as I assume your companies can: 
plot(g) 
+0

ありがとう、それは非常に便利でした。コマンドは私の現在のデータで動作しましたが、まずExcelスプレッドシートをコンパイルする必要があります。 –

関連する問題