首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于图的介数函数

关于图的介数函数
EN

Stack Overflow用户
提问于 2013-04-21 16:16:03
回答 1查看 1.9K关注 0票数 2

当我们使用' betweenness‘函数的(g,weights=NULL,directed = FALSE)时,如果图有weight属性,即使我们写了weights=NULL,该函数仍然会使用weight属性计算。但是我想在没有权重属性的情况下计算介数。所以我觉得这个函数看起来很奇怪。为什么当我们编写weights=NULL时,它仍然使用weight属性?

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-21 17:58:12

权重选项与忽略和不使用权重无关。这是一个关于为用户提供他们自己的权重向量的选项。

doc

权重-可选的正权重向量,用于计算加权的介数。如果图形具有权重边属性,则默认情况下使用此属性。

因此,如果为weights=NULL,则该函数将默认使用E(g)$weight

要自己这样做,可以去掉权重或将其设置为1。

代码语言:javascript
复制
E(g)$weight <- 1
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16129233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档