R:将相关矩阵转换为边缘列表

时间:2018-04-12 21:37:02

标签: r igraph graph-theory

我想创建我的数据的网络图,其中边的权重由相关矩阵中的相关系数定义。连接的定义是统计上的重要性。

由于我想要使用一些参数,我需要将这些信息放在边缘列表而不是矩阵形式,但我正在努力如何转换它。我试图使用igraph,如下所示,但我无法弄清楚如何获得哪些相关性很重要而哪些不在边缘列表中的信息。我猜权重可以设置为零来编码该信息,但我如何组合相关矩阵和p值矩阵?

library(igraph)
g  <- graph.adjacency(a,weighted=TRUE)
df <- get.data.frame(g)
df

2 个答案:

答案 0 :(得分:0)

如果你能提供一个可重复的最小例子,那就太棒了,但我想我明白你要求的是什么。您需要使用graph_from_adjacency_matrix从矩阵制作图表,但请确保在weighted参数中输入内容,否则矩阵中的元素表示边数(小于1)意味着没有边缘)。然后,您可以使用as_data_frame从图表中创建边缘列表。然后执行您想要的任何计算,或加入您拥有的任何外部数据,然后您可以使用graph_from_data_frame

将其转换回图表
cor_mat <- cor(mtcars)
cor_g <- graph_from_adjacency_matrix(cor_mat, mode='undirected', weighted = 'correlation')
cor_edge_list <- as_data_frame(cor_g, 'edges')
only_sig <- cor_edge_list[abs(cor_edge_list$correlation) > .75, ]
new_g <- graph_from_data_frame(only_sig, F)

答案 1 :(得分:0)

对于仍需要此功能的人,这是答案

library(igraph)

g <- graph.adjacency(a, mode="upper", weighted=TRUE, diag=FALSE)
e <- get.edgelist(g)
df <- as.data.frame(cbind(e,E(g)$weight))