将数据帧转换为igraph错误:重复的顶点名称

时间:2016-01-12 14:45:05

标签: r dataframe graph igraph

我知道可以直接从数据框创建一个igraph图。我试图这样做,但到目前为止已经失败了。

我有DF" myvertices"使用以下架构(id和name是唯一的):

console.log

另一个DF" myedges"使用以下架构:

id, name, feature_a, feature_b, feature_c

其中"来自"和"到"包含" id"来自" myvertices"。

基于这些,我尝试了以下内容:

id, from, to, feature_d, feature_e, feature_f

但结果如下:

  

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

1 个答案:

答案 0 :(得分:5)

我猜错误消息提供了一个很好的提示 - 看起来你在顶点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