Вы получаете ошибку идентификатора дубликата вершины, потому что вам нужно ссылаться на уникальные данные узла в vertices =
.Вы можете использовать unique(nodes)
, но это даст вам еще одну ошибку, поскольку узлы 1
и 2
, на которые вы ссылаетесь в данных списка смежности, не включены в ваши nodes
данные.
Ваш узелданные не могут включать в себя только уникальные значения из столбца edges$from
, они должны включать все уникальные значения из edges$from
и edges$to
, поскольку вы передаете список смежности данные в функцию graph_from_data_frame()
.
Так что в edges$to
вам также нужно ссылаться на вершины по их именам, как в edges$from
, например, 12341
или 23435
.
Вот некоторый R-код, возможно, включающий то, что вы естьпытаясь достичь.
#graph from your data frame
MANAGER_LOC <- graph_from_data_frame(
d = edges
,vertices = unique(c(edges$from, edges$to))
,directed = TRUE);
#plot also includes vertices 1 and 2
plot(
x = MANAGER_LOC
,main = "Plot from your edges data");
#plot from your data assuming you are referencing an id in edges$to
MANAGER_LOC <- graph_from_data_frame(
d = merge(
x = edges
,y = data.frame(
to_vertice_id = 1:length(unique(edges$from))
,to_vertice = unique(edges$from))
,by.x = "to"
,by.y = "to_vertice_id"
,all.x = T)[,c("from","to_vertice","weight")]
,vertices = unique(edges$from)
,directed = TRUE);
#plot does not include vertices 1 and 2
plot(
x = MANAGER_LOC
,main = "Plot assuming vertice ID
reference in edges$to");
#plot from your data assuming you are referencing the xth value of edges$from in edges$to
MANAGER_LOC <- graph_from_data_frame(
d = merge(
x = edges
,y = data.frame(
to_vertice_ref = 1:nrow(edges)
,to_vertice = edges$from)
,by.x = "to"
,by.y = "to_vertice_ref"
,all.x = T)[,c("from","to_vertice","weight")]
,vertices = unique(edges$from)
,directed = TRUE);
#plot does not include vertices 1 and 2
plot(
x = MANAGER_LOC
,main = "Plot assuming edges$from
reference in edges$to");