我知道 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))
中的错误引起: ℹ 索引:1。 ℹ 名称:.altID。 由map_dbl()
中的错误引起: ! $ 运算符对于原子向量无效.x$nodeID
我知道 egor 可以与 tidyverse 一起使用,但我对两者都很陌生,并且 egor 对象类型让我感到困惑。 预先感谢您的帮助。
如果我正确理解你的数据结构,请尝试这样的事情:
egor.obj$ego = egor.obj$ego %>%
left_join(egor.obj$alter %>% count(egoID, name = "netsize"), by = "egoID")
它计算每个
alter
中 egoID
中的行数,返回具有两列 egoID
和 netsize
的数据框,然后将其与 ego
数据框连接起来。