注 1:我使用的是 R 包“network”和“sna”
注意 2:我的原始数据是 .csv 文件中的 edgelist 格式。
我一直在寻找将边缘列表数据读入 R 的最佳方法。乍一看,这很简单。
data <- read.csv("file.CSV", header=F)
network <- network(data, matrix.type="edgelist", directed=F) #convert data to network object
val<-data[,3] #here are the values for my edges
set.edge.value(network, "val", val, e=1:length(network$mel))
当我要求网络返回边缘值 (get.edge.values) 时,它会返回正确的值。
但是,当我询问时summary(network)
,它只返回一个邻接矩阵,其中所有值都设置为 1(对角线除外)。即使它们的值为零,它们的值也是 1。
此外,试图获得像 degree(network) 这样的东西会返回错误的结果。
我一直在寻找这几天。一个可能的解决方案是使用network2<-as.matrix.network(netwerk1, matrix.type="adjacency", attrname="val")
. 这行得通。然而,问题是它不再是一个网络对象,而是一个矩阵类。结果,我无法向网络添加顶点属性。再次将 network2 转换回网络对象会丢失网络中的边缘值。
一些帮助将不胜感激。
最好的,弗雷德里克