当我们使用'介意'函数介于(g,weights = NULL,directed = FALSE)时,如果图形具有权重属性,即使我们写了权重= NULL,该函数仍将使用重量属性。但我想计算没有权重属性的中介。所以我觉得这个功能看起来很奇怪。当我们写weight = NULL时,为什么它仍然使用weight属性?
function (graph, v = V(graph), directed = TRUE, weights = NULL,
nobigint = TRUE, normalized = FALSE)
{
if (!is.igraph(graph)) {
stop("Not a graph object")
}
v <- as.igraph.vs(graph, v)
if (is.null(weights) && "weight" %in% list.edge.attributes(graph)) {
weights <- E(graph)$weight
}
if (!is.null(weights) && any(!is.na(weights))) {
weights <- as.numeric(weights)
}
else {
weights <- NULL
}
on.exit(.Call("R_igraph_finalizer", PACKAGE = "igraph"))
res <- .Call("R_igraph_betweenness", graph, v - 1, as.logical(directed),
weights, as.logical(nobigint), PACKAGE = "igraph")
if (normalized) {
vc <- vcount(graph)
res <- 2 * res/(vc * vc - 3 * vc + 2)
}
if (getIgraphOpt("add.vertex.names") && is.named(graph)) {
names(res) <- V(graph)$name[v]
}
res
}
答案 0 :(得分:6)
权重选项不是忽略而不是使用权重。它是为用户提供选项以提供自己的权重向量。
来自doc
weight - 用于计算加权中介度的可选正权重向量。如果图形具有权重边缘属性,则默认使用此属性。
因此,如果weights=NULL
该函数默认使用E(g)$weight
。
自己做的就是去除重量或将它们设置为1,例如
E(g)$weight <- 1