在R中使用graph.adjacency()

N D*_*are 9 plot r graph igraph adjacency-matrix

我在R中有一个示例代码如下:

library(igraph)
rm(list=ls())
dat=read.csv(file.choose(),header=TRUE,row.names=1,check.names=T) # read .csv file
m=as.matrix(dat)
net=graph.adjacency(adjmatrix=m,mode="undirected",weighted=TRUE,diag=FALSE)
Run Code Online (Sandbox Code Playgroud)

我使用csv文件作为输入,其中包含以下数据:

    23732   23778   23824   23871   58009   58098   58256
23732   0   8   0   1   0   10  0
23778   8   0   1   15  0   1   0
23824   0   1   0   0   0   0   0
23871   1   15  0   0   1   5   0
58009   0   0   0   1   0   7   0
58098   10  1   0   5   7   0   1
58256   0   0   0   0   0   1   0
Run Code Online (Sandbox Code Playgroud)

在此之后,我使用以下命令检查重量值:

E(net)$weight
Run Code Online (Sandbox Code Playgroud)

预期输出有点像这样:

> E(net)$weight
 [1]  8  1 10  1 15  1  1  5  7  1
Run Code Online (Sandbox Code Playgroud)

但我得到了奇怪的价值(每次都不一样):

> E(net)$weight
 [1] 2.121996e-314 2.121996e-313 1.697597e-313  1.291034e-57 1.273197e-312 5.092790e-313 2.121996e-314 2.121996e-314 6.320627e-316 2.121996e-314 1.273197e-312 2.121996e-313
[13] 8.026755e-316  9.734900e-72 1.273197e-312 8.027076e-316 6.320491e-316 8.190221e-316 5.092790e-313  1.968065e-62 6.358638e-316
Run Code Online (Sandbox Code Playgroud)

我无法找到我做错的地方和地点?请帮助我得到正确的预期结果,也请告诉我为什么这个奇怪的输出,以及每次运行时都不同.

谢谢,Nitin

hhh*_*hhh 10

下面只是一个小工作示例,比CSV输入更清晰.

library('igraph');
adjm1<-matrix(sample(0:1,100,replace=TRUE,prob=c(0.9,01)),nc=10); 
g1<-graph.adjacency(adjm1); 
plot(g1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ps ?graph.adjacency有很多很好的例子(记得跑library('igraph')).

相关主题

  1. 创建共生矩阵
  2. 使用SAC的共生矩阵?


Aru*_*run 2

该问题似乎是由于矩阵元素的数据类型造成的。graph.adjacency需要类型为 的元素numeric。不确定这是否是一个错误。

做完之后,

m <- as.matrix(dat)
Run Code Online (Sandbox Code Playgroud)

将其模式设置为numeric

mode(m) <- "numeric"
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作:

net <- graph.adjacency(m, mode = "undirected", weighted = TRUE, diag = FALSE)
> E(net)$weight
[1]  8  1 10  1 15  1  1  5  7  1
Run Code Online (Sandbox Code Playgroud)