R:nel2igraph和PN.amalgamation - igraph没有正确生成

时间:2018-06-06 12:36:45

标签: r igraph shapefile

我遇到了包shp2graph的问题。我想使用功能PN.amalgamation,它可以正常工作(见下文)。之后,我想创建一个igraph对象。这里的代码无法做到这一点。 我可以使用每个非合并的shp2graph对象来创建igraph对象。

这是我的示例代码,它主要是来自包shp2graph的描述的复制粘贴:

library(igraph)
library(shp2graph)

data(ORN)
rtNEL<-readshpnw(ORN.nt, ELComputed=TRUE)
res.sl<-SL.extraction(rtNEL[[2]],rtNEL[[3]])
res.me<-ME.simplification(res.sl[[1]],res.sl[[2]],DegreeL=res.sl[[4]]) 
res.pn<-PN.amalgamation(res.me[[1]],res.me[[2]],DegreeL=res.me[[4]])
ptcoords<-Nodes.coordinates(res.pn[[1]])
plot(ORN.nt)
points(ptcoords, col="green")
plot(ORN.nt)
points(Nodes.coordinates(rtNEL[[2]]), col="red")

# igraph created from amalgamation is wrong
test <- nel2igraph(nodelist= res.pn[[1]], edgelist=res.pn[[2]], Directed = TRUE)
plot(test,vertex.size=1,edge.width=1,edge.arrow.size=0,vertex.label=NA)

# res.me is one step before amalgamation
test <- nel2igraph(nodelist= res.me[[1]], edgelist=res.me[[2]], Directed = TRUE)
plot(test,vertex.size=1,edge.width=1,edge.arrow.size=0,vertex.label=NA)

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我发现这个bug在某种程度上与this.search = this.search.bind(this); 包的交互有关。问题是由igraph创建的节点的标签不再是连续的;有些人遗失了,因为我们删除了它们。但是,PN.amalgamation仍以某种方式尝试创建它们,然后发出以下警告:

对于任何遇到同样问题的人来说,这是一种解决问题的方法。

创建自己的igraph功能:

nel2igraph