如何在igraph中查找某些顶点的边ID?

问题描述 投票:1回答:1

[RI中的get.edge.ids()中的igraph函数存在问题,需要将奇数个顶点传递给它,并在它们之间获取edgeIDs,但不幸的是,它仅获得成对顶点样本代码来生成有向图:] >

Graph <- erdos.renyi.game(20, 100 , directed=TRUE, loops=FALSE)

我如何调用get.edge.ids:

get.edge.ids(Graph, c("1", "2", "3)) 

我希望获得这些顶点之间的所有可能的边缘ID,但不起作用。我为此目的开发了一个功能,但是它不够快。这是函数:

insideOfCommEdgeIDs <- function(graph, vertices)
{
    out <- matrix()
    condition <- matrix()
    if (length(vertices) < 2) {return(NULL)}
    for (i in vertices)
    {
        for (j in vertices)
        {
            condition <- are_adjacent(graph,i,j)
            ifelse(condition,
                   out <- rbind(out, get.edge.ids(graph, c(i, j), directed=TRUE)),
                   next)
        }
    }
    return(out[!is.na(out)])
}

有什么方法可以更快地做到这一点?

我在RI中的igraph中的get.edge.ids()函数存在问题,需要将奇数个顶点传递给它,并获取它们之间的edgeID,但不幸的是,它仅将成对顶点示例代码传递给...

r function igraph
1个回答
1
投票

您可以使用%--%运算符通过顶点索引查询边缘,然后使用as_ids()获取边缘索引。

[请注意,我使用的是igraph版本1.2.4.2,所以我使用的是sample_gnm()而不是erdos.renyi.game()

© www.soinside.com 2019 - 2024. All rights reserved.