【问题标题】:Igraph: get ego network density of alters onlyIgraph:仅获取更改的自我网络密度
【发布时间】:2021-10-30 13:01:54
【问题描述】:

我有一个自我网络列表,我的目标是只获得改变的密度。所以基本上从密度计算中去除了自我。

使用来自我的previous question 的相同样本数据,我可以使用该答案来获取自我网络密度列表,但如何不能将每个自我包括在该计算中?

数据:

df<-read.table(text="student_id alter
 1     3
 2     5
 2     2
 2     3
 3     2
 3     4
 3     5
 4     1
 4     6
 4     3
 5     1
 5     6
 5     2
 6     5
 6     2
 6     1
 7     8
 8     9
 9     8
 9     7
10     7
10     9
11    19
11    15
11    12
12    20
12    19
12    11
13    15
13    19
13    11
14    16
14    12
14    18
15    17
15    20
15    17
16    14
16    19
16    20
16    13
17    20
17    18
17    13
17    14
18    13
18    19
18    17
19    17
19    16
19    11
20    13
20    17
20    11
20    1", header = TRUE) 

当前代码:

g <- graph_from_data_frame(df, directed = TRUE)
egonet_list <- make_ego_graph(g, order = 1, mode = "out")

dat <- data.frame(
  student_id = names(V(g)),
  egonet_density = lapply(egonet_list, graph.density) %>% unlist()
)

但我想要的输出,意味着从密度计算中删除自我,只得到改变的密度。

更新

例如,数据示例中的 student_id 为 18:

egonet_list[[18]] %>% delete.vertices(., "18") %>% graph.density()

我正在苦苦挣扎的是如何在应用或循环中执行此操作,以便它可以通过每个自我网络运行并执行此操作。

【问题讨论】:

  • 你的意思是图的密度吗?或者您能否为您的预期输出显示更多详细信息?
  • 是的,很抱歉造成混乱。图的密度减去自我。
  • 您能否显示所需的输出或“图形密度减去自我”的示例?
  • 是的,已在上面更新。这有意义吗?

标签: r dplyr apply igraph


【解决方案1】:

我们可以试试下面的代码

dat <- data.frame(
  student_id = names(V(g)),
  egonet_density = mapply(function(gnet, v) graph.density(delete.vertices(gnet, v)), egonet_list, as.list(names(V(g))))
)

给了

> dat
   student_id egonet_density
1           1            NaN
2           2      0.5000000
3           3      0.5000000
4           4      0.3333333
5           5      0.5000000
6           6      0.6666667
7           7            NaN
8           8            NaN
9           9      0.5000000
10         10      0.5000000
11         11      0.1666667
12         12      0.5000000
13         13      0.5000000
14         14      0.0000000
15         15      1.0000000
16         16      0.1666667
17         17      0.2500000
18         18      0.5000000
19         19      0.0000000
20         20      0.1666667

【讨论】:

    猜你喜欢
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2023-04-05
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多