0

我正在使用 R 中的网络邻接矩阵进行 QAP 回归。目前,矩阵如下所示(忽略 0 和 1):在此处输入图像描述

如何使列/行标签在时间 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)
4

1 回答 1

0

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

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
于 2019-03-22T03:34:57.650 回答