tol*_*lou 3 r graph neighbours igraph
首先,我想说我已经阅读了问题的答案:"问题与R"igraph"包邻居功能",我试图解决我的问题,但我不能.我试着将我的问题作为后续评论,但由于声誉水平低我无法做到,因此我打开了这个新问题.现在这里是我的问题:我有邻居函数的相同问题,因为它已在下面解释: "igraph"包邻居函数,但当我尝试由Gabor Csardi给出的解决方案时,我刚收到null作为结果.我附上了那部分我的代码也在这里.我会非常感谢任何帮助和回答.我的表:
edgelist <- read.table(text = "
1 2
2 3
3 4
4 5
3 6
6 7")
library(igraph)
graph <- graph.data.frame(edgelist)
str(graph)
## IGRAPH DN-- 7 6 --
## + attr: name (v/c)
## + edges (vertex names):
## [1] 1->2 2->3 3->4 4->5 3->6 6->7
Run Code Online (Sandbox Code Playgroud)
现在,如果我想要节点3的邻居,它应该是
2, 4, 6
Run Code Online (Sandbox Code Playgroud)
但我得到的结果是:
2, 4, 5
Run Code Online (Sandbox Code Playgroud)
我注意到它改变了我的节点的顺序.正如我之前解释的那样,我尝试在堆栈溢出中找到的解决方案,但结果为null:
graph$name[neighbors(graph, 3)]
NULL
Run Code Online (Sandbox Code Playgroud)
我不知道我还能做什么,我将不胜感激.
在开始之前,您应该小心不要混淆标签/名称和给定顶点的索引/编号.当你使用这两个数字作为标签和指标时,事情很快就会变得混乱.为了避免混淆,我在这里使用了字母
edgelist <- read.table(text = "
A B
B C
C D
D E
C F
F G")
library(igraph)
graph <- graph.data.frame(edgelist)
str(graph)
#IGRAPH DN-- 7 6 --
# + attr: name (v/c)
# + edges (vertex names):
# [1] A->B B->C C->D D->E C->F F->G
Run Code Online (Sandbox Code Playgroud)
为了了解处理的内容,我们绘制它:
plot(graph)
Run Code Online (Sandbox Code Playgroud)

要获得邻居的索引,请执行以下操作:(记住有一个mode参数)
neighbors(graph, 3, mode = "total") # Index of neighbours by index
## [1] 2 4 5
neighbors(graph, "C", mode = "total") # Index of neighbours by label
## [1] 2 4 5
Run Code Online (Sandbox Code Playgroud)
要做Gabor建议您需要执行以下操作.(我认为他在他的帖子中意味着他错过了V( )并且写了)graph$nameV(graph)$name
# Label of neighbours by label
V(graph)$name[neighbors(graph, "C", mode = "total")]
## [1] "B" "D" "F"
Run Code Online (Sandbox Code Playgroud)
这给出了相应"邻居"的标签.哪个与图像一致.
编辑哎呀.我搞砸了.用来E()代替V().它似乎按预期工作.抱歉.
| 归档时间: |
|
| 查看次数: |
4212 次 |
| 最近记录: |