gpt4 book ai didi

r - R中igraph包中的邻居函数

转载 作者:行者123 更新时间:2023-12-01 09:55:24 27 4
gpt4 key购买 nike

首先,我想说我已经阅读了这个问题的答案:“R “igraph”包邻居函数的问题”,我试图解决我的问题,但我不能。我试图提出我的问题作为后续评论,但由于声誉水平低我不能,因此我打开了这个新问题。现在这是我的问题:
我对邻居函数有同样的问题,因为它已在以下内容中解释过:
"igraph” package neighbor function但是当我尝试由 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

现在,如果我想要节点 3 的邻居,它应该是
2, 4, 6

但我得到的结果是:
2, 4, 5

我注意到它改变了我的节点的顺序。正如我在尝试在堆栈溢出中找到的解决方案之前所解释的那样,但结果为空:
graph$name[neighbors(graph, 3)]
NULL

我不知道我还能做什么
我将不胜感激任何帮助。

最佳答案

在我们开始之前,您应该小心不要混淆给定顶点的标签/名称和索引/编号。当您同时使用数字作为标签和索引时,事情很快就会变得困惑。为了避免混淆,我在这里使用了字母

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

为了查看正在处理的内容,我们绘制了它:
plot(graph)

Imgur

要获取邻居的索引,请执行以下操作:
(记住有一个 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

要执行 Gabor 建议的操作,您需要执行以下操作。 (我认为他错过了 V( ) 并在他的帖子中写了 graph$name,而他的意思是 V(graph)$name)
# Label of neighbours by label
V(graph)$name[neighbors(graph, "C", mode = "total")]
## [1] "B" "D" "F"

这给出了相应“邻居”的标签。
这确实与图像一致。

编辑 哎呀。我搞砸了。二手 E()而不是 V() .它似乎按预期工作。对不起。

关于r - R中igraph包中的邻居函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com