繁体   English   中英

R“ igraph”包邻居功能出现问题

[英]issues with R “igraph” package neighbor function

我最近开始使用R“ igraph”软件包(0.7版)。 我写了一个简单的程序来了解包的基础(将数据读入图对象,获取节点的邻居)。 我正在使用一个顶点从0开始的图形。 根据需要填充图形中的边,但是当我尝试获取节点的邻接表/邻居时,我发现它没有提供预期的结果。 有人可以帮我解决这个问题,或者指出我是否缺少一些琐碎的东西?

以下是我编写的图形数据/代码:

图形边缘数据(第一列包含第一个顶点,第二列包含从第一个顶点到其边缘的顶点)

0 5
1 5
2 5
3 5
0 2

> library('igraph')
> graph_file_ori = read.table("test.txt")
> graph_obj = graph.data.frame(graph_file_ori,directed=FALSE)
> str(graph_obj)
IGRAPH UN-- 5 5 -- 
+ attr: name (v/c)
+ edges (vertex names):

[1] 0--5 1--5 2--5 3--5 0--2

> neighbors(graph_obj,0)
Error in .Call("R_igraph_neighbors", graph, as.igraph.vs(graph, v) - 1,  : 
At type_indexededgelist.c:750 : cannot get neighbors, Invalid vertex id
> neighbors(graph_obj,1)
[1] 3 5
> neighbors(graph_obj,2)
[1] 5
> neighbors(graph_obj,3)
[1] 1 5
> neighbors(graph_obj,4)
[1] 5
> neighbors(graph_obj,5)
[1] 1 2 3 4

根据该图,预期输出为:

neighbors(0) = 5,2
neighbors(1) = 5
neighbors(2) = 5,0
neighbors(3) = 5

4级为0。感谢帮助。

您的图形具有:顶点1:“ 0”,顶点2:“ 1”,顶点3:“ 2”,顶点4:“ 3”,顶点5:“ 5”

这是我认为neighbors()的工作方式:

neighbors(graph_obj,1)<=> neighbors(graph_obj,顶点1),并返回顶点3,顶点5 <=>“ 2”,“ 5”

neighbors(graph_obj,2)<=> neighbors(graph_obj,顶点2),并返回顶点5 <=>“ 5”

neighbors(graph_obj,3)<=> neighbors(graph_obj,顶点3),并返回顶点1,顶点5 <=>“ 0”,“ 5”

...

如果您想使用符号顶点名称,那很好,但是然后您也需要在查询中使用它们。 即写

neighbors(graph_obj, "0")

如果您还希望将结果用作符号名,那么您需要

graph_obj$name[neighbors(graph_obj, "0")]

igraph版本0.8不再需要此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM