我正在使用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)
答案 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