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

如何用igraph读取斯坦福SNAP的soc-sign-bitcoinotc数据集?

正确用igraph读取Bitcoin OTC边列表数据集的方法

我来帮你搞定这个问题!你之前尝试用graph.adjacency的思路走偏啦——这个函数是用来处理邻接矩阵格式数据的,但你的Bitcoin OTC数据集是标准的边列表格式(每行代表一条有向边,还附带评分和时间属性),所以得换个正确的姿势来读取。

下面是一步步的操作指南:

1. 读取CSV数据并指定列名

首先读取文件时,给列指定清晰的名称,方便后续操作:

# 读取数据,指定列名对应SOURCE, TARGET, RATING, TIME
dat <- read.csv('soc-sign-bitcoinotc.csv', header = FALSE, col.names = c("SOURCE", "TARGET", "RATING", "TIME"))

2. 用graph_from_data_frame创建有向图

igraph里的graph_from_data_frame函数专门用来处理边列表,它会自动把前两列作为边的起点和终点,剩下的列直接作为边的属性:

library(igraph)
# 创建有向图,directed=TRUE对应数据里的有向评分关系
g <- graph_from_data_frame(d = dat, directed = TRUE)

3. 验证图的正确性

你可以用以下代码确认图是否正确创建,以及边属性是否被正确加载:

# 查看图的基本信息(节点数、边数、类型)
print(g)

# 查看前3条边的详情
E(g)[1:3]

# 查看前3条边的评分属性
E(g)$RATING[1:3]

# 查看前3条边的时间戳属性
E(g)$TIME[1:3]

为什么之前的方法不对?

graph.adjacency需要输入一个n×n的邻接矩阵(n是节点总数),矩阵里的元素代表节点间的连接关系。但你的数据集是每行一条边的“长格式”,直接转成矩阵喂给这个函数会完全不符合它的输入要求,自然得不到正确的图结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:55:16