楼主: zhaomn200145
1344 1

[程序分享] igraph包提取子网络图问题求教 [推广有奖]

  • 1关注
  • 17粉丝

贵宾

已卖:254份资源

学科带头人

69%

还不是VIP/贵宾

-

威望
1
论坛币
580287 个
通用积分
80.4202
学术水平
128 点
热心指数
80 点
信用等级
43 点
经验
61461 点
帖子
1458
精华
1
在线时间
2603 小时
注册时间
2005-9-27
最后登录
2025-12-24

楼主
zhaomn200145 发表于 2024-10-15 10:01:17 |AI写论文
100论坛币
使用igraph包构建网络后,如果要提取其中任意几个顶点构建该网络的子网络时,有一个奇怪的现象,比如构建这个g网络:g <- graph(c(1,2,2,3,3,4,4,5,5,6,1,5,1,6,2,5,3,5), directed = F)
然后从中提取一个子网络,随机选取几个顶点,比如:1,2,4
subg <- subgraph(g, c(1,2,4))
然后画图
plot(subg)
神奇的是这个子图的顶点序号会变成1,2,3.之前原图的顶点4的序号就没有了。如果还想在子图中继续保留原顶点序号,方便以后画图的时候把原图和子图用 %u% 进行合并,该如何操作?谢谢各位大神!

最佳答案

赵安豆 查看完整内容

在R语言中使用igraph包来提取一个大网络中的特定节点组成的子网是一种常见的需求。假设你已经创建了一个名为`g`的图,并且想要提取包含某些特定顶点(比如说顶点A、B和C)的子图,可以按照以下步骤操作: 1. 首先确保你的igraph包是最新的版本。 2. 然后使用`V(g)`来获取图中所有节点的列表。这将帮助你确认节点名是否正确以及它们在图中的存在。 3. 使用`ind % subgraph(ind)`(如果你安装了`magrittr`包并喜欢使用管道操作符的话 ...
关键词:GRAPH 问题求教 GRAP APH RAP

沙发
赵安豆 发表于 2024-10-15 10:01:18
在R语言中使用igraph包来提取一个大网络中的特定节点组成的子网是一种常见的需求。假设你已经创建了一个名为`g`的图,并且想要提取包含某些特定顶点(比如说顶点A、B和C)的子图,可以按照以下步骤操作:

1. 首先确保你的igraph包是最新的版本。
2. 然后使用`V(g)`来获取图中所有节点的列表。这将帮助你确认节点名是否正确以及它们在图中的存在。
3. 使用`ind <- c("A", "B", "C")`这样的方式定义一个包含你感兴趣节点名称的向量。
4. 接下来,使用`subgraph(g, ind)`或者更简单的语法`g %>% subgraph(ind)`(如果你安装了`magrittr`包并喜欢使用管道操作符的话)来从图`g`中提取由`ind`定义的子集。

但是,请注意在igraph中的节点名是case-sensitive的,这意味着"A"和"a"会被视为不同的节点。另外,如果图中的节点没有命名,则需要通过它们的索引(即位置)来指定哪些节点应包含在子图中。

例如:

```r
# 创建一个有向图
g <- graph_from_literal(A -+ B, A -+ C, D -+ E)

# 提取包括A、B和C节点在内的子网络
sub_graph <- subgraph(g, c("A", "B", "C"))

# 查看子网的结构
print(sub_graph)
```

这将返回一个新的图对象`sub_graph`,它仅包含指定的节点及其之间的边。如果原图中没有直接从A到C或者B到C的边,则在子图中也不会有这些边;但如果存在通过其他节点连接这两点的路径,在提取子图时会自动包括那些中间节点以保持连通性。

希望这能帮助你解决使用igraph包构建和操作网络的问题!如果有任何具体的错误信息或进一步的需求,请提供更详细的信息以便于给出更精确的回答。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-4 01:39