You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计R语言tidygraph对象列表中节点同名列的出现频率

实现代码

我们可以通过为每个tidygraph的节点name列生成唯一标识、按标识分组统计频率的方式实现需求,完整代码如下:

library(tidygraph)
library(dplyr)
library(purrr)

# 方法1:用字符串拼接生成分组标识,无需额外依赖
result <- myList %>%
  # 为每个tidygraph生成name列的唯一分组键
  set_names(map_chr(., ~ {
    node_name <- pull(activate(., nodes), name)
    paste(node_name, collapse = "||")
  })) %>%
  # 按分组键拆分列表
  split(names(.)) %>%
  # 每组处理生成最终对象
  map(function(group) {
    # 取组内第一个对象为模板修改节点数据
    group[[1]] %>%
      activate(nodes) %>%
      select(name) %>% # 保留name列,自动删除不需要的val列
      mutate(frequency = length(group))
  }) %>%
  # 转为无命名的列表,匹配预期输出格式
  unname()

# 方法2:用哈希算法生成分组标识,兼容性更强(避免name中包含拼接字符冲突)
# 需先安装digest包:install.packages("digest")
# library(digest)
# result <- myList %>%
#   set_names(map_chr(., ~ digest(pull(activate(., nodes), name)))) %>%
#   split(names(.)) %>%
#   map(function(group) {
#     group[[1]] %>%
#       activate(nodes) %>%
#       select(name) %>%
#       mutate(frequency = length(group))
#   }) %>%
#   unname()

执行后打印result即可得到你需要的输出样式。

内容的提问来源于stack exchange,提问作者Electrino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:04