我正在将矩阵对象(其中每个节点代表一个国家)转换为数据帧对象,这样前两列是连接边的两个节点,第三列是边值(或属性)。我的矩阵的维度是161乘161,因此生成的数据帧应该包含161*161=25961行。然而,下面的代码只能产生19628行,我想知道这里发生了什么?如果有人能对此有所了解,我们将不胜感激。
# load data
sim <- readRDS(url("https://www.dropbox.com/s/veyjr8mdi1u6g6h/sim.rds?dl=1"))
# load igraph package and use the graph.adjacency() function
# first try with a minimal example
myAdjacencyMatrix <- matrix(runif(100),nc=10,nr=10)
g <- graph.adjacency(myAdjacencyMatrix,weighted=TRUE)
df <- get.data.frame(g)
dim(df)
[1] 100 3
# now repeat the same procedure on sim data
g1 <- graph.adjacency(sim,weighted=TRUE)
df1 <- get.data.frame(g1)
dim(df1)
[1] 19628 3
当您检查sim
的值时,您会看到有6293
的零,当转移到图形表示时会跳过这些零。
> ecount(g1)
[1] 19628
> length(sim)
[1] 25921
> sum(sim==0)
[1] 6293