user1320502
user1320502

Reputation: 2570

order matrix based on another matrix

If i have

ex1 <- 
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 
1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), .Dim = c(10L, 12L
), .Dimnames = list(c("q1", "q2", "q3", "q4", "q5", "q6", "q7", 
"q8", "q9", "q10"), c("q1", "q2", "q3", "q4", "q5", "q6", "q7", 
"q8", "q9", "q10", "q11", "q12")))

and

ex2 <- 
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 
0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 
1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), .Dim = c(10L, 12L
), .Dimnames = list(c("q4", "q7", "q10", "q9", "q2", "q1", "q6", 
"q3", "q5", "q8"), c("q12", "q9", "q10", "q6", "q5", "q7", "q4", 
"q1", "q11", "q2", "q3", "q8")))

How can I make the row and column order of ex2 match ex1 and vice versa .

I tried methods in this post but to no avail.

Upvotes: 0

Views: 54

Answers (1)

James
James

Reputation: 66874

Just use the rownames and colnames to subset. [ is pretty flexible:

ex2[rownames(ex1),colnames(ex1)]
    q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12
q1   1  0  0  1  1  1  1  0  1   1   1   1
q2   0  1  0  1  1  1  1  0  1   1   0   1
q3   1  1  1  1  1  1  1  0  1   1   0   1
q4   0  0  0  1  1  0  0  0  0   0   0   1
q5   1  1  1  1  1  1  1  0  1   1   1   1
q6   1  0  0  1  1  1  1  0  1   1   1   1
q7   1  0  0  0  0  0  1  0  1   1   0   1
q8   1  1  1  1  1  1  1  1  1   1   1   1
q9   0  0  1  0  1  1  1  0  1   1   1   1
q10  1  0  0  0  0  1  0  1  1   0   1   1

ex1[rownames(ex2),colnames(ex2)]
    q12 q9 q10 q6 q5 q7 q4 q1 q11 q2 q3 q8
q4    0  1   0  1  1  0  1  1   1  1  1  0
q7    0  1   0  1  1  1  1  1   0  1  1  1
q10   1  1   1  1  1  1  1  1   1  1  1  1
q9    0  1   1  1  1  1  1  1   1  1  1  1
q2    0  0   0  1  0  0  0  1   0  1  1  1
q1    0  0   0  0  1  1  0  1   0  0  0  0
q6    0  1   0  1  1  1  1  1   0  1  1  1
q3    1  1   0  0  0  0  1  1   0  1  0  1
q5    0  0   1  1  1  1  1  1   0  1  1  0
q8    0  0   1  1  1  1  1  1   1  1  1  1

Upvotes: 3

Related Questions