在 R 中使用 asIgraph() 函数将网络对象转换为 igraph 对象时出错?



我目前正在尝试将网络对象转换为igraph对象。从各种帖子中,我了解到intergraph包可以通过asIgraph()功能做到这一点。我正在尝试转换经典的桑普森数据集,该数据集可在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

我有上面的错误。有谁知道为什么这个规范数据集会失败?

编辑:查看两周前在ergmGitHub上的最新帖子 修复了桑普森的"提名"属性 数据。 这是桑普森数据集中的一个错误,现已修复 GitHub 版本,但尚未更新到 CRAN。

它失败了,因为sampson数据集具有边属性nominations即使数据集中有 88 条边,该属性也只有 26 个值。当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)
...

从文档中我有点不清楚此属性应该如何映射到边缘列表,但如果可以确定这一点,则可以将其与set.edge.attribute单独添加。

相关内容

  • 没有找到相关文章

最新更新