You need to enable JavaScript to run this app. R语言rtweet包lookup_friendships函数的关注关系结果矩阵构建方法
优惠活动
大模型
产品
解决方案
定价
更多

R语言rtweet包lookup_friendships函数的关注关系结果矩阵构建方法

批量好友关系查询与矩阵存储实现

前置初始化

先完成用户列表校验、邻接矩阵的提前初始化,避免后续循环中频繁修改矩阵结构带来的性能损耗:

# 替换为你的实际用户列表
user_vec <- c("user0", "user1", "user2", "user3")
user_count <- length(user_vec)
# 初始化带维度命名的邻接矩阵,方便后续按用户名直接索引
follow_matrix <- matrix(
  NA,
  nrow = user_count,
  ncol = user_count,
  dimnames = list(source_user = user_vec, target_user = user_vec)
)

批量查询对生成

直接筛选所有满足i>j的用户组合,避免重复调用接口查询冗余关系:

# 生成全量用户两两组合
raw_pairs <- expand.grid(
  source = user_vec,
  target = user_vec,
  stringsAsFactors = FALSE
)
# 计算每个用户在列表中的位置,筛选i>j的有效查询对
raw_pairs$source_idx <- match(raw_pairs$source, user_vec)
raw_pairs$target_idx <- match(raw_pairs$target, user_vec)
valid_pairs <- raw_pairs[raw_pairs$source_idx > raw_pairs$target_idx, ]

接口批量调用

利用lookup_friendships原生支持多组查询对的特性,一次性提交所有待查询关系,相比逐对循环调用能减少90%以上的API请求次数,降低触发接口限流的概率

# 批量提交查询请求
relation_data <- lookup_friendships(
  source_user = valid_pairs$source,
  target_user = valid_pairs$target
)

结果清洗与矩阵填充

按照你给定的过滤规则提取有效关系值,直接回填到预初始化的矩阵中:

# 按规则过滤有效关系字段
clean_data <- relation_data %>%
  filter(relationship == "source", variable == "following") %>%
  select(source, target, value)
# 逐行回填矩阵
for (i in seq_len(nrow(clean_data))) {
  s <- clean_data$source[i]
  t <- clean_data$target[i]
  follow_matrix[s, t] <- clean_data$value[i]
}

实操注意事项

  • 接口频率适配:rtweet内置了接口频率自动检测逻辑,用户量较大时可将待查询的组合拆分为20-30组的小批次,在频率窗口内分批提交,避免请求被拦截。
  • 结果校验:填充完成后可随机抽取2-3个已知的关注关系,手动调用单次查询函数比对矩阵中的值,确认过滤逻辑没有偏差。
  • 异常值处理:对矩阵中保留的NA值,可单独生成待补查的组合列表,后续单独重查即可,不会破坏已经填充的有效结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 10:57:10