如何计算缩小到一个图形中的顶点数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算缩小到一个图形中的顶点数?相关的知识,希望对你有一定的参考价值。
我有一些代表社交网络的大型igraph
对象。所有节点都有各种属性,其中sector
是一个因子变量。我已经将这个大型网络缩小为一个小的网络,其中顶点表示组,边缘具有原始网络中各个边的总和。第二个网络中的label
属性表示第一个中的sector
属性。
groupnet <- contract(g, as.integer(as.factor(V(g)$sector)), "ignore")
E(groupnet)$weight <- 1
groupnet <- simplify(groupnet, edge.attr.comb = list(weight = "sum"))
V(groupnet)$label <- levels(as.factor(V(g)$sector))
我想在第二个对象V(groupnet)$groupsize
中添加另一个属性,该对象表示收缩到groupnet
中的原始顶点的数量。我已经尝试使用以下代码但它不起作用:
V(groupnet)$groupsize <- length(V(g)$sector[V(g)$sector == V(groupnet)$label])
我该怎么做呢?
答案
table()
在这里可能会有所帮助。试用:
set.seed(1234)
library(igraph)
g <- make_ring(1000)
V(g)$sector <- factor(sample(LETTERS, 100, replace = T))
V(g)$sector
## contracted network
groupnet <- contract(g, as.integer(as.factor(V(g)$sector)), "ignore")
E(groupnet)$weight <- 1
V(groupnet)$label <- levels(as.factor(V(g)$sector))
## number of original vertices that were contracted into groupnet
# the tip is to see that table(V(g)$sector) provides the number of vertices per sector and
# its output is also arranged like V(groupnet)
table(V(g)$sector)
V(groupnet)
# solution
V(groupnet)$groupsize <- as.numeric(table(V(g)$sector))
以上是关于如何计算缩小到一个图形中的顶点数?的主要内容,如果未能解决你的问题,请参考以下文章