R语言中igraph对象使用append函数出现异常的解决问询
解决R中append()拆分igraph图对象的问题
在R里用append()给列表添加igraph图对象时,之所以会把图拆成一堆子元素,是因为append()默认会将传入的对象拆解为可迭代的单元——而igraph的图对象是S4类,内部包含多个属性节点,append()会把这些属性逐个拆分出来塞进列表里。
要保持图对象的完整性,有三种简单方法:
方法1:用list()包裹要添加的图对象
给append()的第二个参数套一层list(),让它把整个图对象当成单个元素处理:
library(igraph) m1 <- matrix(c(1:3,2:4), ncol=2) m2 <- matrix(c(1:4,2:5), ncol=2) g1 <- graph.edgelist(m1) g2 <- graph.edgelist(m2) g_l <- list(g1) (g_l <- append(g_l, list(g2)))
方法2:直接通过列表索引赋值
利用列表的索引扩展,直接把图对象赋值到新的位置:
g_l <- list(g1) g_l[[length(g_l)+1]] <- g2
方法3:用c()合并列表(批量添加更方便)
如果要添加多个图对象,可以把新图放进列表后用c()合并:
g_l <- list(g1) g_l <- c(g_l, list(g2)) # 批量添加示例:c(g_l, list(g2, g3, g4))
执行后就能得到期望的结果:
[[1]] IGRAPH eadfb20 D--- 4 3 -- edges from eadfb20: [1] 1->2 2->3 3->4 [[2]] IGRAPH eadfe8b D--- 5 4 -- edges from eadfe8b: [1] 1->2 2->3 3->4 4->5
内容的提问来源于stack exchange,提问作者Glory2Ukraine
相关产品推荐
相关产品推荐

