我需要合并一个图的几个顶点。我使用了igraph contract
函数,它工作得很好,但不允许我获得原始类型数据。此外,该函数不会删除折叠的顶点(在示例中:4和8)。
G <- graph.ring(10)
V(G)$character <- rep(c("attr1","attr2"),5)
V(G)$numeric <- rep(1:5,2)
V(G)$newId <- c(1,2,3,3,5,6,7,7,9,10)
G1 <- contract(G, V(G)$newId, vertex.attr.comb = toString)
par(mfrow=c(1,2))
plot(G)
plot(G1)
字符串
除了对折叠顶点的值进行分组之外,结果只生成字符格式值。我尝试了vertex.attr. comb的不同选项。因为我有字符和数字数据,所以求和选项不起作用,并且“first”或“last”不保留所有数据。其他选项,如列出所有属性不起作用。
因此,我不知道如何为每个顶点获取一个值而不是两个或更多,也不知道如何操作所获得的值。
另外,我必须删除折叠的顶点。在我的情况下,我可以用delete.vertices (G,V(KeyW)[degree(G)==0)
来做,但当它们与原始网络隔离时,它似乎不是理想的解决方案。提前感谢。
1条答案
按热度按时间jdzmm42g1#
更新
如果需要对每个节点的属性进行一些额外的操作,可以像下面这样使用
lapply
字符串
你将获得
型
contract
图形和 Package 属性我想你可以尝试连接属性,例如,
vertex.attr.comb = c
型
并且
G1
的属性被保存在列表中,例如,型