私は、Nノード間のエッジ重みを詳述するデータフレームを持っています。この種のデータを扱うためのパッケージはありますか?Rのネットワークデータの操作
例えば、私は、ネットワークとして、以下の情報をプロットしたいと思います:
p1 p2 counts
1 a b 100
2 a c 200
3 a d 100
4 b c 80
5 b d 90
6 b e 100
7 c d 100
8 c e 40
9 d e 60
私は、Nノード間のエッジ重みを詳述するデータフレームを持っています。この種のデータを扱うためのパッケージはありますか?Rのネットワークデータの操作
例えば、私は、ネットワークとして、以下の情報をプロットしたいと思います:
p1 p2 counts
1 a b 100
2 a c 200
3 a d 100
4 b c 80
5 b d 90
6 b e 100
7 c d 100
8 c e 40
9 d e 60
1つのオプションはnetworkパッケージ、統計的、社会的ネットワーク分析のためのRパッケージのstatnet家族の一員です。これは、ネットワークデータを疎な方法で処理します。これは、大規模なデータセットに適しています。ネットワークオブジェクト
は、私は、次を行います。
A = read.table(file="so.txt",header=T) A p1 p2 counts 1 a b 100 2 a c 200 3 a d 100 4 b c 80 5 b d 90 6 b e 100 7 c d 100 8 c e 40 9 d e 60 library(network) net = network(A[,1:2]) # Get summary information about your network net Network attributes: vertices = 5 directed = TRUE hyper = FALSE loops = FALSE multiple = FALSE bipartite = FALSE total edges= 9 missing edges= 0 non-missing edges= 9 Vertex attribute names: vertex.names adjacency matrix: a b c d e a 0 1 1 1 0 b 0 0 1 1 1 c 0 0 0 1 1 d 0 0 0 0 1 e 0 0 0 0 0 set.edge.attribute(net,"weight",A[,3]) gplot(net) ## Another cool feature s = as.sociomatrix(net,attrname="weight") plot.sociomatrix(s)
はここigraph内のデータのネットワークプロットを作成する方法は次のとおりです。
d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'),
p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'),
counts=c(100, 200, 100,80, 90,100, 100,40,60))
library(igraph)
g <- graph.data.frame(d, directed=TRUE)
print(g, e=TRUE, v=TRUE)
tkplot(g, vertex.label=V(g)$name)
私もIGRAPHに取り組んできました。グラフを作成する1つの方法は、すべての ""から ""へのノードのリストをテキストファイルに書き出し、それをグラフオブジェクトとして読み戻すことです。グラフオブジェクトは、多くのグラフ理論プロセスを受けることができ、非常に大きなネットワークを扱うことができます。
私の経験では、igraphは大規模なグラフ理論的作業のための私の好きなパッケージです。それはメモリ効率的で、いくつかの非常に良いアルゴリズムを持っています。 igraphは内部のエッジリスト型のデータ構造を使用します。
私は「sna」パッケージ(「ソーシャルネットワーク分析」)を使用する傾向があります。インタラクティブな仕事や小さなネットワークのプロットには最適です。 snaは、より多くの隣接行列データ構造を使用します。
ネットワークパッケージには、疎な実装もあります。 –
偉大な答え!非常に役立ちます! – RHelp