Convert dataframe to igraph error: Duplicate vertex names
Convert dataframe to igraph error: Duplicate vertex names
我知道可以直接从数据帧创建 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)
但结果如下:
Error in graph.data.frame(myedges, directed = T, vertices =
myvertices) : Duplicate vertex names.
我想错误消息给出了一个很好的提示 - 似乎您在顶点 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
我知道可以直接从数据帧创建 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)
但结果如下:
Error in graph.data.frame(myedges, directed = T, vertices = myvertices) : Duplicate vertex names.
我想错误消息给出了一个很好的提示 - 似乎您在顶点 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