r - 为什么我从图中得到了错误的邻居

标签 r graph igraph neighbours

我正在尝试从图中找到节点的公共(public)邻居。但是,我得到了节点 8错误邻居。从数据集中,我们可以说节点 8 的公共(public)邻居是节点 5 和 6,但我得到的是节点 4 和 5!

代码:

graph <- graph_from_data_frame(df_graph, directed = FALSE)
plot(graph, vertex.label = V(graph)$name)
neighbors(graph, 8, mode="all")

输出:

+ 3/8 vertices, named, from a32ba25:
[1] 4 5 8

图表:

enter image description here

你能告诉我为什么我找错了邻居吗?

可重现的数据:

structure(list(To = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 4L, 5L, 8L, 
8L), From = c(7L, 3L, 4L, 7L, 4L, 5L, 4L, 6L, 6L, 5L, 6L)), class = "data.frame", row.names = c(NA, 
-11L))

最佳答案

区分顶点名称和顶点索引很重要。如果您使用数字值,则表明您正在使用顶点索引。根据创建图表时数据的顺序,索引可能与名称不同。如果你运行

V(graph)
# [1] 1 2 3 4 5 8 7 6

这会按索引顺序显示顶点的名称。所以第 8 个顶点实际上是顶点“6”。如果您想获取名称为“8”的顶点的邻居,那么您需要一个字符值。

neighbors(graph, "8", mode="all")
# [1] 5 6

如果您没有使用数字作为顶点名称,这可能会更清楚。在您的 data.frame 中,您的起始值和起始值可以是您喜欢的任何字符值。该图只会按照它们遇到的顺序为它们分配一个索引。如果您希望顶点按特定顺序排列。您可以使用 vertices= 参数设置该顺序

graph <- graph_from_data_frame(df_graph, directed = FALSE, vertices=data.frame(name=1:8))

关于r - 为什么我从图中得到了错误的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66725538/

相关文章:

r - 在保留原始构面内容的颜色的同时,在R ggplot的每个构面中生成插图

r - 用 R 中指定单词旁边的单词过滤所有行

matlab - 如何绘制具有特定 x 值的累积图?

javascript - 如何从加权图中的顶点找到长度为 k 的最短路径?

r - 提取有关 tidygraph 中特定节点的邻域/子图

R计算图中子图/组件的数量

r - 跨列计算平均值、标准差、n 等并创建新的数据框

r - 使用所有列 NA 过滤 data.frame,但在某些列 NA 时保留

java - 从右到左绘制图像

python - iGraph 中的模块化和集群问题 [Python]