我有一个网络,我想比较从各种算法中得到的模块性分数,例如: walktrap,具有由我自己选择的社区成员资格(手工分配)派生的模块化分数。例如,我希望能够为每个节点分配1或2的“社区”。到目前为止,我已经使用各种方法来尝试实现这一点,并且当我运行模块化时它们通常会崩溃R环境(graph1,assigned_communities) )。
library(igraph)
raw1 <- read.csv("C:\\edge list directed weighted.csv")
graph1 <- graph.data.frame(raw1, directed=TRUE, vertices=NULL)
attrib <- read.csv("C:\\vertex_groups.csv")
“attrib”是持有我指定组的对象。 .csv文件包含四列 - “顶点”,它是graph1中包含的唯一顶点的排序列表,以及其他具有我希望能够分配给这些顶点的社区的列,在此示例中为“group1”“group2”等。
##method1: communities object type clone
members <- as.double(attrib$group1)
nam <- as.character(attrib$vertex)
comms <- list(membership=members, vcount=vcount(graph1), names=nam, algorithm="by.hand")
class(comms) <- "communities"
modularity(graph1, membership(comms) )
第一次尝试是克隆“社区”对象。我从对应于group1的attrib对象中提取列,我想将该组指定为社区。运行该模块化命令会导致环境崩溃。
v = attrib$group1
names(v) = attrib$vertex
modularity(graph1,v)
这里,v将group1值提取为列,但也将行命名为与commmunity对象的样式匹配。这也会破坏环境。
感谢您的帮助。
答案 0 :(得分:0)
崩溃是由于在64位R上运行此代码引起的,我更改为32位并且崩溃停止。去搞清楚。