如何从R中的矩阵创建边列表?
关系表示为矩阵如何从R中的矩阵创建边列表?,r,list,matrix,social-networking,edge-list,R,List,Matrix,Social Networking,Edge List,关系表示为矩阵x,如下所示: A B C D A 0 2 1 1 B 2 0 1 0 C 1 1 0 1 D 1 0 1 0 这些条目指的是它们拥有的连接数 有人能告诉我如何把它写成边缘列表吗 我更愿意将其写为边缘列表: A B A B A C A D B C 但是此边缘列表允许我创建网络图吗?使用igraph软件包: x <- matrix(
x
,如下所示:
A B C D
A 0 2 1 1
B 2 0 1 0
C 1 1 0 1
D 1 0 1 0
这些条目指的是它们拥有的连接数
有人能告诉我如何把它写成边缘列表吗
我更愿意将其写为边缘列表:
A B
A B
A C
A D
B C
但是此边缘列表允许我创建网络图吗?使用
igraph
软件包:
x <- matrix(c(0,2,1,1,2,0,1,0,1,1,0,1,1,0,1,0), 4, 4)
rownames(x) <- colnames(x) <- LETTERS[1:4]
library(igraph)
g <- graph.adjacency(x)
get.edgelist(g)
# [,1] [,2]
# [1,] "A" "B"
# [2,] "A" "B"
# [3,] "A" "C"
# [4,] "A" "D"
# [5,] "B" "A"
# [6,] "B" "A"
# [7,] "B" "C"
# [8,] "C" "A"
# [9,] "C" "B"
# [10,] "C" "D"
# [11,] "D" "A"
# [12,] "D" "C"
x试试这个
M <- matrix( c(0,2,1,1,2,0,1,0,1,1,0,1,1,0,1,0), 4, 4, dimnames=list(c("A","B","C","D"), c("A","B","C","D")))
eList <- NULL
for ( i in 1:nrow(M) ){
for ( j in 1:ncol(M)) {
eList <- c(eList, rep(paste(dimnames(M)[[1]][i], dimnames(M)[[2]][j] ), M[i,j]))
}
}
在重塑2
中使用melt
,然后删除权重==0。如果不需要打印重量。删除它就行了
x
sample1 sample2 sample3 sample4
feature1 0 2 1 1
feature2 2 0 1 0
feature3 1 1 0 1
feature4 1 0 1 0
melt(x)
Var1 Var2 value
1 feature1 sample1 0
2 feature2 sample1 2
3 feature3 sample1 1
4 feature4 sample1 1
5 feature1 sample2 2
谢谢你的帮助!我现在正在阅读你推荐的文件。你的解决方案反过来又是什么?我的意思是,如果我们有一个边列表,想用你的方式把它转换成一个邻接矩阵?
x
sample1 sample2 sample3 sample4
feature1 0 2 1 1
feature2 2 0 1 0
feature3 1 1 0 1
feature4 1 0 1 0
melt(x)
Var1 Var2 value
1 feature1 sample1 0
2 feature2 sample1 2
3 feature3 sample1 1
4 feature4 sample1 1
5 feature1 sample2 2