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

足球运动员社交网络聚类:树状图创建报错求助

解决足球运动员朋友圈相似度聚类的树状图错误

错误信息:FUN(X[[i]], ...) 中出错:as.sociomatrix.sna 的输入必须是邻接矩阵/数组、网络对象或列表。

你的代码问题在于:graph_from_edgelist生成的是igraph图对象,但cor()函数无法直接处理这类对象——它需要矩阵格式的好友关系数据,才能计算不同运动员朋友圈的相关性。

修正后的代码及说明

# 读取数据集
footballplayers <- read.csv("footballplayer.csv", header = TRUE)

# 根据边列表生成图对象(好友关系建议设为无向,若确实是单向关注保留directed=TRUE)
footballplayers_e <- graph_from_edgelist(as.matrix(footballplayers), directed = FALSE)

# 将图对象转为邻接矩阵:行/列对应运动员,单元格1=存在好友关系,0=无
adj_matrix <- as_adjacency_matrix(footballplayers_e, type = "both", names = TRUE, sparse = FALSE)

# 计算运动员朋友圈的相关性:转置矩阵后,每行代表一个运动员的好友列表,cor计算列表间的相关性
# 用1减去相关系数得到距离值,用于聚类
similarities <- as.dist(1 - cor(t(adj_matrix)), upper = TRUE) 

# 层次聚类并绘制树状图
footballplayersdend <- hclust(similarities)
plot(footballplayersdend)

关键修正点

  • 转成邻接矩阵:用as_adjacency_matrix()把igraph对象转换成数值矩阵,这是计算相关性的前提
  • 转置矩阵:默认邻接矩阵的行是"SELF"列的运动员,列是"OTHER"列的好友;转置后每行对应一个运动员的所有好友,这样cor()才能正确计算不同运动员朋友圈的相似度
  • 可选调整:如果你的数据是单向关注(不是双向好友),可以把as_adjacency_matrix的type参数改成"out",只保留每个运动员主动关注的好友列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:05:21