在R中使用asIgraph()函数将网络对象转换为igraph对象时出错?
我目前正在尝试将网络对象转换为igraph对象。从各种帖子中,我了解到在R中使用asIgraph()函数将网络对象转换为igraph对象时出错?,r,igraph,R,Igraph,我目前正在尝试将网络对象转换为igraph对象。从各种帖子中,我了解到intergraph包可以通过asIgraph()函数实现这一点。我正在尝试转换经典的Sampson数据集,它位于ergm包中。当我这样做时: > library(ergm) > library(intergraph) > library(igraph) > data(sampson) > class(samplike) # The network object [1] "network" >
intergraph
包可以通过asIgraph()
函数实现这一点。我正在尝试转换经典的Sampson数据集,它位于ergm
包中。当我这样做时:
> library(ergm)
> library(intergraph)
> library(igraph)
> data(sampson)
> class(samplike) # The network object
[1] "network"
> asIgraph(samplike)
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 88, 26
我有上面的错误。有人知道这个规范数据集为什么失败吗
编辑:查看两周前在ergm
GitHub上发布的最新帖子
这是sampson数据集中的一个错误,现已修复
GitHub版本,但尚未更新为CRAN
它之所以失败,是因为sampson
数据集有一个edge属性namignations
,该属性只有26个值,即使数据集中有88个边。当intergraph
尝试转换为igraph
时,它尝试使用asDF()
将边缘属性绑定到边缘列表,但此步骤失败。简单的方法是删除边属性,如下所示:
smplk<-samplike
delete.edge.attribute(smplk, "nominations")
asIgraph(smplk)
IGRAPH dca72f1 D--- 18 88 --
+ attr: cloisterville (v/l), group (v/c), na (v/l), vertex.names
| (v/c), na (e/l)
...
smplk