如何使用egor包删除少于10个节点的网络?

问题描述 投票:0回答:1

我知道 egor 是一个利基包,但我被困住了,希望有人能提供帮助。

我有一组以自我为中心的网络,我正在使用 egor 包进行分析。 egor 对象基本上是三种类型数据的列表,名为:ego、alter 和 aatie。

ego 数据每个 egoID 有一行数据。 每个 egoID 的更改数据有多行。 本质上,我希望 ego 数据有一个列来计算 alter 数据集中每个 egoID 存在的行数。 更改数据还有一个名为“nodeID”的列,该列从 1 开始,每个 egoID 按顺序最多包含 n 行。

我想删除所有少于10个改变的网络。我想我应该首先在自我数据集中创建一个名为“netsize”的新列,其中包含该自我的改变数量。 然后我可以从那里过滤。 第一步,我尝试了几种类型的代码,但为了让您了解我造成的混乱,这里有一个示例:

egor.obj$ego <- egor.obj$ego %>%
  mutate(netsize = map_dbl(egor.obj$alter, ~ max(.x$nodeID, na.rm = TRUE)))

我收到以下错误:

mutate()
中的错误: ℹ 在争论中:
netsize = map_dbl(egor.obj$alter, ~max(.x$nodeID, na.rm = TRUE))
。 由
map_dbl()
中的错误引起: ℹ 索引:1。 ℹ 名称:.altID。 由
.x$nodeID
中的错误引起: ! $ 运算符对于原子向量无效

我知道 egor 可以与 tidyverse 一起使用,但我对两者都很陌生,并且 egor 对象类型让我感到困惑。 预先感谢您的帮助。

r network-programming tidyverse
1个回答
0
投票

如果我正确理解你的数据结构,请尝试这样的事情:

egor.obj$ego = egor.obj$ego %>% 
    left_join(egor.obj$alter %>% count(egoID, name = "netsize"), by = "egoID")

它计算每个

alter
egoID
中的行数,返回具有两列
egoID
netsize
的数据框,然后将其与
ego
数据框连接起来。

© www.soinside.com 2019 - 2024. All rights reserved.