如何确保行名称和列名称在QAP分析中的顺序相同

时间:2019-03-22 03:05:54

标签: r igraph network-analysis statnet

我正在使用R中的网络邻接矩阵进行QAP回归。当前,矩阵看起来像这样(忽略0和1):enter image description here

如何在时间1和2之间以相同的顺序显示列/行标签?我已经对初始边列表进行了排序(下面的代码中的q1和q2),但是当将它们转换为一种模式邻接矩阵时,似乎在翻译中会丢失一些东西。

q1_2001<-graph.data.frame(q1, directed=FALSE)
q2_2002<-graph.data.frame(q2, directed=FALSE)
V(q1_2001)$type <- bipartite_mapping(q1_2001)$type
V(q2_2002)$type <- bipartite_mapping(q2_2002)$type
q1bp_2001<-bipartite.projection(q1_2001)
q2bp_2002<-bipartite.projection(q2_2002)
q1edge2001<-as_edgelist(q1bp_2001$proj1)
q1edge2002<-as_edgelist(q2bp_2002$proj1)
##Predictor Matrix (IV)
qap2001A<-get.adjacency(graph.data.frame(q1edge2001),sparse = FALSE)
qap2001A[order(decreasing = TRUE)]
##Response Matrix (DV)
qap2002B<-get.adjacency(graph.data.frame(q1edge2002),sparse = FALSE)

1 个答案:

答案 0 :(得分:0)

假设这两个矩阵的维数相同,并且列名和行名相同(尽管它们可能以不同的顺序出现),则可以通过以下方法获得所需的结果:

Time2 = Time2[rownames(Time1), colnames(Time1)]

例如

set.seed(1)
Time1 = replicate(5, sample(0:1, 5, replace = T)) 
Time2 = replicate(5, sample(0:1, 5, replace = T)) 

colnames(Time1) = rownames(Time1) = c("22B", "13B", "999B", "11B", "03B")
colnames(Time2) = rownames(Time2) = c("22B", "999B", "11B", "13B", "03B")

> Time1
     23B 13B 999B 11B 03B
23B    0   1    0   0   1
13B    0   1    0   1   0
999B   1   1    1   1   1
11B    1   1    0   0   0
03B    0   0    1   1   0

> Time2
     22B 999B 11B 13B 03B
22B    0    0   1   1   1
999B   0    1   1   1   0
11B    0    0   0   1   0
13B    1    0   1   1   1
03B    0    1   0   1   1

# Notice that Time1 and Time2 are similar to your example but with different entries. The column names and row names are the same but in different order

Time2 = Time2[rownames(Time1), colnames(Time1)]

> Time2
     22B 13B 999B 11B 03B
22B    0   1    0   1   1
13B    1   1    0   1   1
999B   0   1    1   1   0
11B    0   1    0   0   0
03B    0   1    1   0   1