“名称”属性[1]的长度必须与矢量[0]的长度相同

时间:2019-09-01 14:00:41

标签: r dataframe matrix igraph adjacency-matrix

我正在将邻接矩阵转换为图形对象到数据帧。我正在尝试以下代码:

df.h <- graph_from_adjacency_matrix(X_final,mode = "directed")
test2 <- as_long_data_frame(graph = df.h)

但是,我得到了错误:

Error : Error in names(ver) <- paste0("from_", names(ver)) :    'names' attribute [1] must be the same length as the vector [0]

如何解决该问题?

1 个答案:

答案 0 :(得分:1)

要使此功能正常工作,您需要指定一个name属性,例如图的ID:

set.seed(1)
g <- erdos.renyi.game(10,.2)
V(g)$name <- V(g)

然后该函数应运行:

> head(as_long_data_frame(g), 5)
  from to ver[el[, 1], ] ver2[el[, 2], ]
1    2  3              2               3
2    3  4              3               4
3    4  7              4               7
4    5  7              5               7
5    5  8              5               8

但是,我认为这很适合您:截至目前(2019年9月,v1.2.4.1),总体功能似乎还没有完成(请参阅上面的神秘名称)。根据文档?as_long_data_frame的建议,添加第二个属性后,该函数将按预期(完全)运行:

V(g)$color <- colors()[1:10]
> head(as_long_data_frame(g), 5)
  from to from_name    from_color to_name      to_color
1    2  3         2     aliceblue       3  antiquewhite
2    3  4         3  antiquewhite       4 antiquewhite1
3    4  7         4 antiquewhite1       7 antiquewhite4
4    5  7         5 antiquewhite2       7 antiquewhite4
5    5  8         5 antiquewhite2       8    aquamarine