0
RでiGraphを使用して分析していますが、現在は非常に高価な計算を行っています。私はグラフ内のすべてのノードでそれを行う必要があるので、誰かがそれを行うより効率的な方法を知っていれば、私はそれを感謝するでしょう。クラスタ割り当てに基づくネイバーグループは遅い
グラフは、g
から始めます。私は最初、私は基本的に2つのグループ今
nc <- length(c)
assignments <- rbinom(nc, 1, .5)
の1に、各クラスタの割り当てに続いて、グラフ上
library(igraph)
adj_matrix <- matrix(rbinom(10 * 5, 1, 0.5), ncol = 8000, nrow = 8000)
g <- graph_from_adjacency_matrix(adj_matrix, mode = 'undirected', diag = FALSE)
c <- cluster_louvain(g)
をいくつかのコミュニティの検出を行い、各ノードのために、私はそのの何パーセントを知りたいですネイバーは特定のグループに属します(クラスターの割り当てによって定義されます)。私は各行がグラフに一つの頂点に対応したデータフレームを持っていることを考えると、私は
data$pct_neighbors_1 <- sapply(1:nrow(data),
pct_neighbors_1,
graph = g, community = c,
assignments = assignments)
有するすべての頂点のためにこれを行う、
pct_neighbors_1 <- function(g, vertex, c, assignments) {
sum(
ifelse(
assignments[membership(c)[neighbors(g, vertex)]] == 1, 1, 0)
)/length(neighbors(g, vertex))
}
そして:私は現在、現在の方法でこれを行います私は物事をより効率的にすることができるここにどこかありますか?ありがとう!
あなたがサンプルを提供することができますグラムhttp://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Bulat
確かに、ただした。 – araspion
まだビットがありません 'エラー:関数が見つかりませんでした" graph_from_adjacency_matrix " – Bulat