r 中 igraph 模块化函数的问题
Problem with igraph modularity function in r
我正在尝试根据属性计算图形的模块化。首先,我这样定义属性:
graph <- set_vertex_attr(graph, "attribute", value = as.numeric(df$attribute))
这行代码运行没有返回错误,接下来我运行模块化函数:
modularity(graph, V(graph)$attribute)
我 运行 此代码用于分类属性没有任何问题,但对于数字属性(如示例中)我收到此错误:
Error in modularity.igraph(graph, V(graph)$attribute) : At community.c:919 : Invalid membership vector, Invalid value
注意:我的图形是一个转换为 igraph 对象的邻接矩阵 (380*380)。我试图添加到图表中的数字属性包含许多零和小于 1 的值。
知道我做错了什么吗?
如果你阅读 modularity.igraph
的帮助页面,你会发现第二个参数是成员向量,它将每个顶点分配给一个模块,从 1 开始。因此,如果你有 0
或此向量中的负数,您将收到无效值错误。因子很好,因为它们的水平对应于从 1 开始的数字。
require(igraph)
g <- barabasi.game(n = 20, m = 2)
mod1 <- rep(c(1, 2, 3, 4, 5), 8)
modularity(g, mod1)
# Modularity is implemented for undirected graphs only.
# [1] -0.04950245
mod2 <- rep(c(0, 1, 2, 3, 4), 8)
modularity(g, mod2)
# Modularity is implemented for undirected graphs only.
# Error in modularity.igraph(g, mod2) :
# At community.c:919 : Invalid membership vector, Invalid value
如果你认为你的隶属度向量是正确的,并且想用它来计算模块度,你可以简单地将它转换为一个因子:
modularity(g, as.factor(mod2))
# Modularity is implemented for undirected graphs only.
# [1] -0.04950245
我正在尝试根据属性计算图形的模块化。首先,我这样定义属性:
graph <- set_vertex_attr(graph, "attribute", value = as.numeric(df$attribute))
这行代码运行没有返回错误,接下来我运行模块化函数:
modularity(graph, V(graph)$attribute)
我 运行 此代码用于分类属性没有任何问题,但对于数字属性(如示例中)我收到此错误:
Error in modularity.igraph(graph, V(graph)$attribute) : At community.c:919 : Invalid membership vector, Invalid value
注意:我的图形是一个转换为 igraph 对象的邻接矩阵 (380*380)。我试图添加到图表中的数字属性包含许多零和小于 1 的值。 知道我做错了什么吗?
如果你阅读 modularity.igraph
的帮助页面,你会发现第二个参数是成员向量,它将每个顶点分配给一个模块,从 1 开始。因此,如果你有 0
或此向量中的负数,您将收到无效值错误。因子很好,因为它们的水平对应于从 1 开始的数字。
require(igraph)
g <- barabasi.game(n = 20, m = 2)
mod1 <- rep(c(1, 2, 3, 4, 5), 8)
modularity(g, mod1)
# Modularity is implemented for undirected graphs only.
# [1] -0.04950245
mod2 <- rep(c(0, 1, 2, 3, 4), 8)
modularity(g, mod2)
# Modularity is implemented for undirected graphs only.
# Error in modularity.igraph(g, mod2) :
# At community.c:919 : Invalid membership vector, Invalid value
如果你认为你的隶属度向量是正确的,并且想用它来计算模块度,你可以简单地将它转换为一个因子:
modularity(g, as.factor(mod2))
# Modularity is implemented for undirected graphs only.
# [1] -0.04950245