R将egor对象转换为igraph /使用可视化应用程序(错误:重复的顶点名称)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R将egor对象转换为igraph /使用可视化应用程序(错误:重复的顶点名称)相关的知识,希望对你有一定的参考价值。

我想用R的egor包分析自我中心网络。这个软件包包括egor的网络可视化应用程序 - 短egor_vis_app - (使用igraph)。我设法创建一个egor对象,但我不能使用这个应用程序来可视化网络(错误重复顶点名称)或创建一个igraph objext(as_igraph(),相同的错误)。我究竟做错了什么?

到目前为止我尝试过:我使用了预先存在的egor对象(data(“egor32”))和可视化应用程序。

然后,我使用这个预先存在的数据来创建一个egor对象:

    data("alters32")
    data("egos32")
    data("edges32") 
    e <- egor(alters.df = alters32,
               egos.df = egos32,
               aaties = edges32,
               ID.vars = list(
                 ego = "egoID",
                 alter = "alterID",
                 source = "Source",
                 target = "Target"))

并且应用程序以及as_igraph(e)函数不起作用(我在使用此数据创建egor对象时遵循此tutorial)。

这是我的示例代码(基于this):

    df_new <- read.csv(textConnection('"id","numgiven","sex",
    "sex1","sex2","sex3","sex4","sex5","close12",
    "close13","close14","close15","close23","close24",
    "close25","close34","close35","close45"
    10,6,1,2,2,1,2,2,0,0,0,0,0,0,0,1,1,1
    36,6,2,2,2,2,1,1,0,0,0,1,0,0,0,1,0,0'
    ), as.is=TRUE)

    e1 <- with(df_new,  onefile_to_egor(egos = df_new, pmin(numgiven,5), 
                           ID.vars=list(ego="id"), 
                           attr.start.col="sex1",
                           attr.end.col="sex5",
                           max.alters=5,
                           aa.first.var="close12", 
                           aa.regex="^(?<attr>[[:alpha:]]+)(?<src>[[:digit:]])(?<tgt>[[:digit:]])$"))

也不起作用。

答案

我是egor的开发人员之一,虽然我知道这个问题并且计划在即将发布的版本中修复它,但是有一种方法可以通过重新排序alter data列来自行解决这个问题。问题是igraph要求更改ID或顶点名称是列出更改/顶点的数据框中的第一列。

以下是修复egor对象的方法:

library(dplyr)
e1$.alts <- lapply(e1$.alts, function(x) select(x, .altID, everything()))

有了这个修复,as_igraph()函数和可视化应用程序就可以工作了。

以上是关于R将egor对象转换为igraph /使用可视化应用程序(错误:重复的顶点名称)的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex)将变量映射到网络的边(edge)

使用 plotly 或 Network 3D 将 igraph 转换为交互式绘图

将加权边缘列表转换为 r 中的未加权边缘列表

R语言使用igraph包进行网络(network)可视化实战

将 arma::mat 邻接矩阵转换为 C 中的 igraph 图 (Rcpp)

r 将MAPK途径磷酸化下载到R中的igraph对象中