使用R中的igraph在两个不同的csv文件中创建一个具有边列表和节点列表的网络?

时间:2016-03-25 22:07:20

标签: r csv

首先,我读了this question,但这对我没有帮助。

我有两个csv文件:第一个包含节点列表,如:

Id,Label
0.0,Myriel
1.0,Napoleon
2.0,MlleBaptistine
3.0,MmeMagloire

第二个包含如下链接:

Source,Target,Weight
1.0,0.0,1.0
2.0,0.0,8.0
3.0,0.0,10.0
3.0,2.0,6.0
4.0,0.0,1.0

我希望在RStudio中使用igraph显示此网络。 这就是我所做的:

library(igraph)

# set working directory
setwd('.../Dataset/script')
nodes <- read.csv('nodes.csv')

#plot(nodes)

net <- graph.data.frame(net, directed=FALSE)
#V(net)$frame.color <- "white"
V(net)$color <- "orange"
V(net)$label <- "" 
V(net)$size <- 10
E(net)$arrow.mode <- 0

plot(net)

但图表似乎没有链接。 如何从2个不同的文件导入节点和链接?

由于

1 个答案:

答案 0 :(得分:0)

我已从第二个data.frame中删除了一条边,因为节点列表中没有相应的顶点。此外,由于您对data.frame和igraph对象使用相同的名称,因此我更改了包含从网络到连接的边缘信息的data.frame的名称。

为了从两个不同的数据源构建您的igraph对象,您可以提供edgelist,本示例中的命名连接和顶点(称为节点到graph_from_data_frame()

的data.frames)
library("igraph")

nodes <- read.table(text = "Id,Label
                            0.0,Myriel
                            1.0,Napoleon
                            2.0,MlleBaptistine
                            3.0,MmeMagloire",
             header = TRUE, sep = ",", stringsAsFactors = FALSE)

connections  <- read.table(text = "Source,Target,Weight
                                   1.0,0.0,1.0
                                   2.0,0.0,8.0
                                   3.0,0.0,10.0
                                   3.0,2.0,6.0",
               header = TRUE, sep = ",", stringsAsFactors = FALSE)

net <- graph_from_data_frame(connections, directed = FALSE, vertices = nodes)
V(net)$color <- "orange"
V(net)$label <- "" 
V(net)$size <- 10
E(net)$arrow.mode <- 0


plot(net, vertex.label = V(net)$Label)

undirected graph