我需要合并一个图的几个顶点.我使用了iggraph 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)

除了对收拢顶点的值进行分组外,结果仅生成字符格式值.我try 了vertex.attr.comb的不同选项.因为我有字符和数字数据,所以SUM选项不起作用,"First"或"Last"不会保留所有数据.其他选项,如列出所有属性都不起作用.

因此,我不知道如何 for each 顶点获得单个值,而不是两个或更多,也不知道如何处理获得的值.

此外,我还必须移除折叠的顶点.在我的情况下,我可以使用delete.vertices (G,V(KeyW)[degree(G)==0),但当它们打算与原始网络隔离时,这似乎不是理想的解决方案. 先谢谢你.

推荐答案

Update

如果您想对每个 node 的属性进行一些额外的操作,可以使用lapply,如下所示

V(G1)$numeric <- unlist(lapply(V(G1)$numeric, sum))

你就会得到

> V(G1)$numeric
 [1] 1 2 7 0 5 1 5 0 4 5

contract graph and wrap attributes

我想您可以try 连接这些属性,例如vertex.attr.comb = c

G1 <- contract(G, V(G)$newId, vertex.attr.comb = c)

并且G1的属性被保存在列表中,例如,

> str(V(G1)$character)
List of 10
 $ : chr "attr1"
 $ : chr "attr2"
 $ : chr [1:2] "attr1" "attr2"
 $ : chr(0)
 $ : chr "attr1"
 $ : chr "attr2"
 $ : chr [1:2] "attr1" "attr2"
 $ : chr(0) 
 $ : chr "attr1"
 $ : chr "attr2"

> str(V(G1)$numeric)
List of 10
 $ : int 1
 $ : int 2
 $ : int [1:2] 3 4
 $ : int(0)
 $ : int 5
 $ : int 1
 $ : int [1:2] 2 3
 $ : int(0)
 $ : int 4
 $ : int 5

> str(V(G1)$newId)
List of 10
 $ : num 1
 $ : num 2
 $ : num [1:2] 3 3
 $ : num(0)
 $ : num 5
 $ : num 6
 $ : num [1:2] 7 7
 $ : num(0)
 $ : num 9
 $ : num 10

R相关问答推荐

指定要保留在wrap_plots中的传奇

R的GG平行坐标图中的排序变量

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

如何使用stat_extract_all正确提取我的目标值?

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

如何在kableextra调用cell_spec()中忽略NA?

用相同方法得到不同函数的ROC最优截断值

用值序列对行进行子集化,并标识序列开始的列

筛选出以特定顺序患病的个体

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

以字符格式导入的ExcelElectron 表格日期列标题

如何在PDF格式的kableExtra表格中显示管道字符?

仅当后续值与特定值匹配时,才在列中回填Nas

删除在R中的write.table()函数期间创建的附加行

用满足特定列匹配的另一行替换NA行

如何将EC50值绘制在R中的剂量-react 曲线上?

在GT()中的列之间添加空格

根据排名的顶点属性调整曲线图布局(&Q)

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插