【问题标题】:Convert dataframe to igraph error: Duplicate vertex names将数据框转换为 igraph 错误:重复的顶点名称
【发布时间】:2016-04-17 05:52:18
【问题描述】:

我知道可以直接从数据框创建 igraph 图。我尝试过这样做,但到目前为止不知何故失败了。

我有一个具有以下架构的 DF“myvertices”(id 和名称是唯一的):

id, name, feature_a, feature_b, feature_c

还有另一个具有以下架构的 DF “myedges”:

id, from, to, feature_d, feature_e, feature_f

其中“from”和“to”包含来自“myvertices”的“id”。

基于这些,我尝试了以下方法:

g <- graph.data.frame(myedges, directed=TRUE, vertices=myvertices)

但结果如下:

graph.data.frame 中的错误(myedges,directed = T,vertices = myvertices) : 重复的顶点名称。

【问题讨论】:

  • 请提供(至少)一个最小的例子!

标签: r dataframe graph igraph


【解决方案1】:

我猜错误消息给出了一个很好的提示 - 似乎您在顶点 ID 中有重复项。例如:

library(igraph)

myvertices <- read.csv(stringsAsFactors=F, text="
id,name,feature_a,feature_b,feature_c
a,foo,1,2,3
b,bar,1,2,3
c,extra,1,2,3")

myedges <- read.csv(stringsAsFactors=F, text="
id,from,to,feature_d,feature_e,feature_f
1,a,b,1,2,3")

graph.data.frame(myedges[, -1], directed=TRUE, vertices=myvertices)
# IGRAPH DN-- 3 1 -- 
# + attr: name (v/c), feature_a (v/n), feature_b (v/n), feature_c (v/n), feature_d (e/n), feature_e (e/n), feature_f (e/n)
# + edge (vertex names):
# [1] foo->bar

myvertices$id[3] <- "a" # duplicate a
graph.data.frame(myedges[, -1], directed=TRUE, vertices=myvertices)
# Error in graph.data.frame(myedges[, -1], directed = TRUE, vertices = myvertices) : 
#   Duplicate vertex names

【讨论】:

  • 宾果游戏,谢谢。但我想知道你为什么从 myedges 中漏掉了第一列?
  • 因为?graph.data.framed“在前两列中包含符号边列表的数据框。”
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 2021-02-22
  • 1970-01-01
  • 2020-05-31
  • 2011-06-21
  • 2019-03-08
相关资源
最近更新 更多