Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I reorder the rows of a matrix, data.frame or vector according to another one

Tags:

test1 <- as.matrix(c(1, 2, 3, 4, 5))
row.names(test1) <- c("a", "d", "c", "b", "e") 

test2 <- as.matrix(c(6, 7, 8, 9, 10))
row.names(test2) <- c("e", "d", "c", "b", "a") 

  test1
  [,1]
a    1
d    2
c    3
b    4
e    5

 test2
  [,1]
e    6
d    7
c    8
b    9
a   10

How can I reorder test2 so that the rows are in the same order as test1? e.g.

 test2
  [,1]
a    10
d    7
c    8
b    9
e    6

I tried to use the reorder function with: reorder (test1, test2) but I could not figure out the correct syntax. I see that reorder takes a vector, and I'm here using a matrix. My real data has one character vector and another as a data.frame. I figured that the data structure would not matter too much for this example above, I just need help with the syntax and can adapt it to my real problem.

like image 430
John Avatar asked May 07 '10 03:05

John


People also ask

How does Rbind work in R?

rbind() function in R Language is used to combine specified Vector, Matrix or Data Frame by rows. deparse. level: This value determines how the column names generated. The default value of deparse.

Can data frame convert to Matrix?

Convert a Data Frame into a Numeric Matrix in R Programming – data. matrix() Function. data. matrix() function in R Language is used to create a matrix by converting all the values of a Data Frame into numeric mode and then binding them as a matrix.


1 Answers

test2 <- test2[rownames(test1),,drop=FALSE]
like image 75
Rob Hyndman Avatar answered Sep 19 '22 17:09

Rob Hyndman