微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

igraph 网络未在 R

如何解决igraph 网络未在 R

我第一次尝试使用 igraph我有兴趣将某些分组属性添加到某些顶点,以便稍后使用此信息更改它们在图中的颜色。我试图制作的图形是一个电极连接网络。

我会尽量详细解释这个过程。

首先,我使用关联矩阵创建我的网络:

net <- graph_from_incidence_matrix(inc_mat)

> net
IGRAPH 92adce4 UN-B 50 422 -- 
+ attr: type (v/l),name (v/c)
+ edges from 92adce4 (vertex names):
 [1] C3 --C4  C3 --CP1 C3 --CP6 C3 --Cz  C3 --F3  C3 --F4  C3 --FC1 C3 --FC2 C3 --FC5 C3 --Fp1 C3 --Fp2
[12] C3 --Oz  C3 --P3  C3 --P8  C3 --POz C4 --C3  C4 --CP1 C4 --CP2 C4 --CP5 C4 --Cz  C4 --F4  C4 --F7 
[23] C4 --F8  C4 --FC1 C4 --FC2 C4 --FC5 C4 --FC6 C4 --Fp2 C4 --Fz  C4 --P3  C4 --P4  C4 --P7  C4 --P8 
[34] CP1--C3  CP1--CP5 CP1--CP6 CP1--Cz  CP1--F4  CP1--F7  CP1--FC1 CP1--FC2 CP1--FC5 CP1--Fp1 CP1--Fp2
[45] CP1--Oz  CP1--P3  CP1--P7  CP1--POz CP1--Pz  CP2--C3  CP2--C4  CP2--CP2 CP2--CP6 CP2--F4  CP2--F7 
[56] CP2--FC2 CP2--FC6 CP2--Fp1 CP2--Fz  CP2--Oz  CP5--C3  CP5--C4  CP5--CP2 CP5--CP5 CP5--Cz  CP5--F3 
[67] CP5--F4  CP5--F8  CP5--FC2 CP5--FC5 CP5--Fp1 CP5--Fp2 CP5--Oz  CP5--P3  CP5--P7  CP5--P8  CP5--POz
[78] CP6--C3  CP6--CP2 CP6--CP5 CP6--Cz  CP6--F3  CP6--F4  CP6--F7  CP6--FC1 CP6--FC2 CP6--FC6 CP6--Fp1
+ ... omitted several edges

据我所知,这是我的图的边缘,没问题。现在我正在尝试为每个顶点添加一个分组属性,以便稍后调用属性进行着色。例如,C3-C4-Cz 我想称它们为“cen”。为此,我准备了另一个数据框,其中包含与顶点相同数量的观测值,并以相同的顺序(在本例中为 50)用于此目的:

> head(vertexfam)
    Elec1  Fam
1      C3  cen
2      C4  cen
3     CP1 cenp
4     CP2 cenp
5     CP5 cenp
6     CP6 cenp

现在,根据 documentation,我知道我可以逐个属性地直接执行此操作,例如 V(net)[1]$group <- "central",因此,我尝试使该过程自动化。

> V(net)
+ 50/50 vertices,named,from 92adce4:
 [1] C3  C4  CP1 CP2 CP5 CP6 Cz  F3  F4  F7  F8  FC1 FC2 FC5 FC6 Fp1 Fp2 Fz  Oz  P3  P4  P7  P8  POz Pz  C3 
[27] C4  CP1 CP2 CP5 CP6 Cz  F3  F4  F7  F8  FC1 FC2 FC5 FC6 Fp1 Fp2 Fz  Oz  P3  P4  P7  P8  POz Pz 

> for (i in 1:nrow(vertexfam)){
+   V(net)[i]$group <- vertexfam$Fam[i]
+ }

但是,一旦我检查属性是否已设置,结果不是预期的:

> V(net)$group[1]
[1] NA

顺便说一句,我也尝试过一一设置属性,但它似乎对我也不起作用。我也尝试使用基本属性设置机制 set_edge_attr(net,name = 'group',index = V(net),value = vertexfam$Fam) 并且结果是相同的。我的意图是对边缘也这样做,但首先我需要弄清楚错误是什么。

任何人都可以知道为什么会发生这种情况或我做错了什么吗?

非常感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。