【R语言实例】igraph — 网络分析与可视化包(2)

作者简介: 本文作者系大学统计学专业教师,多年从事统计学的教学科研工作,在随机过程、统计推 断、机器学习领域有深厚的理论积累与应用实践。

2. 从文件读取网络数据

数据集1: 边列表

边列表数据集由两个文件组成。

  • Media-Example-NODES.csv
  • Media-Example-EDGES.csv
nodes <- read.csv("Dataset1-Media-Example-NODES.csv", header=T, as.is=T)
links <- read.csv("Dataset1-Media-Example-EDGES.csv", header=T, as.is=T)

检查一下数据

head(nodes)

head(links)

nrow(nodes); length(unique(nodes$id))

nrow(links); nrow(unique(links[,c("from", "to")]))

注意到,link数多余唯一的from-to组合数,这说明存在相同的两个结点之间有多条边的情况。同一对结点间相同类型的边应该只算一次。

links <- aggregate(links[,3], links[,-3], sum)

links <- links[order(links$from, links$to),]

colnames(links)[4] <- "weight"

rownames(links) <- NULL

数据集2:矩阵

第二个数据集记录的是新闻源与阅读者。

nodes2 <- read.csv("Dataset2-Media-User-Example-NODES.csv", header=T, as.is=T)

links2 <- read.csv("Dataset2-Media-User-Example-EDGES.csv", header=T, row.names=1)

检查数据

head(nodes2)

head(links2)

links2 <- as.matrix(links2)

dim(links2)

dim(nodes2)

3. 转换网络成图对象

首先,我们使用graph.data.frame()函数把原始数据转换成一个igraph网络对象。 该函数包括两个必要的数据框参数:d and vertices.

  • d 网络边。它的前两列是边的源结点与终结点。随后的列是边的属性,例如,权值、类型、标签等。
  • vertices 结点ID列。

3.1 数据集1

library(igraph)

net <- graph_from_data_frame(d=links, vertices=nodes, directed=T) 

class(net)

net

我们也很容易显示图的结点、边和其它属性。

E(net)       # The edges of the "net" object

V(net)       # The vertices of the "net" object

E(net)$type  # Edge attribute "type"

V(net)$media # Vertex attribute "media"

plot(net, edge.arrow.size=.4,vertex.label=NA)

在这里插入图片描述
我们想删除图中的环。

et 
  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值