18

私の一般的な問題は、iGraph を使用してグラフを生成するときに、頂点の名前/ラベルが失われることです (ここで正しい単語がわからない)。

次のような二部ネットワークのエッジ リスト IC_edge_sub があります。

  new_individualID new_companyID
1             <NA>     10024354c
3        10069415i      2020225c
4        10069415i     16020347c
5        10069272i      2020225c
6        10069272i     16020347c
7        10069274i      2020225c

次に、グラフ要素を作成します。

IC_projected_graphs <- bipartite.projection(IC_twomode, types = 
                         is.bipartite(IC_twomode)$type)

次に、それを折りたたんで、companyID 間の接続のみを識別します

IC_projected_graphs <- bipartite.projection(IC_twomode, types =   
                         is.bipartite(IC_twomode)$type)

次に、隣接行列を取得します。

CC_matrix_IC_based <- get.adjacency(CC_graph_IC_based); CC_matrix_IC_based

iGraph では、ノードの番号付けはゼロから始まるため、マトリックスの命名もゼロから始まります。ただし、代わりに、最終的な CC_matrix_IC_based マトリックスのエッジリストの 2 列目に指定されている「new_companyID」が必要になります。

元のエッジリストからの情報を使用して、最終的な隣接行列に行名と列名を入れる方法を教えてください。

私はそれをグーグルで検索し、スタックフローを検索しましたが、実際に機能する答えを見つけることができませんでした. 助けてくれてどうもありがとう

4

2 に答える 2

24

頂点名は通常name、igraph で指定された頂点属性に格納されます。したがって、グラフが変数 に格納されている場合、 を使用してすべての頂点の名前を取得gできます。V(g)$name

于 2012-06-08T11:16:50.333 に答える
2

重要な問題は、グラフを生成するときに名前を保存していなかったことです。その後、データを失わないようにする必要がありました。以下は、全体的なソリューションです。

# Subsetting / triangulating data for selected games
GC_edge_sub <- subset (GC_edge, mb_titleID %in% loggames_yearly_sample$mb_titleID)
GC_edge_sub <- subset(GC_edge_sub, select = c("new_titleID", "new_companyID"))
head(GC_edge_sub)

# Generating the vertex names
vertex_new_companyID <- data.frame(names = unique(GC_edge_sub$new_companyID))
vertex_new_titleID <- data.frame(names = unique(GC_edge_sub$new_titleID))
vertex <- rbind(vertex_new_companyID, vertex_new_titleID)

# Creation of GC_twomode
GC_twomode <- graph.data.frame(GC_edge_sub, vertices = vertex)
GC_projected_graphs <- bipartite.projection(GC_twomode, 
                                            types = is.bipartite(GC_twomode)$type)
GC_matrix_GC_based <- get.adjacency(GC_twomode)
dim(GC_matrix_GC_based)

# Collapsing the matrix
# Be aware that if you use the classical command 
# `CC_graph_GC_based <- GC_projected_graphs$proj2` 
# it collapses, but looses the colnames and rownames
# I thus: a) create a subset of the adjacency matrix; and
#         b) create the lookef for matrix by multiplication
rowtokeep <- match(vertex_new_companyID$names, colnames(GC_matrix_GC_based))
coltokeep <- match(vertex_new_titleID$names, rownames(GC_matrix_GC_based))
GC_matrix_GC_based_redux <- GC_matrix_GC_based[rowtokeep, coltokeep]
# We now have a CG matrix.Let's build from this a GG matrix.
CC <- GC_matrix_GC_based_redux %*% t(GC_matrix_GC_based_redux)
于 2012-06-09T01:42:42.700 に答える