[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,但不幸的是,它仅将成对顶点示例代码传递给...
您可以使用%--%
运算符通过顶点索引查询边缘,然后使用as_ids()
获取边缘索引。
[请注意,我使用的是igraph
版本1.2.4.2,所以我使用的是sample_gnm()
而不是erdos.renyi.game()
。