R 不同维数的子集矩阵

R 不同维数的子集矩阵,r,matrix,similarity,R,Matrix,Similarity,假设我有两个不同维度的相似性矩阵,其中一些行的名称相同,但顺序不同,例如: > m1 red yellow blue green black red 0.000000 2.236068 4.472136 6.708204 8.944272 yellow 2.236068 0.000000 2.236068 4.472136 6.708204 blue 4.472136 2.236068 0.000000 2.236068 4.472

假设我有两个不同维度的相似性矩阵,其中一些行的名称相同,但顺序不同,例如:

> m1
            red   yellow     blue    green    black
red    0.000000 2.236068 4.472136 6.708204 8.944272
yellow 2.236068 0.000000 2.236068 4.472136 6.708204
blue   4.472136 2.236068 0.000000 2.236068 4.472136
green  6.708204 4.472136 2.236068 0.000000 2.236068
black  8.944272 6.708204 4.472136 2.236068 0.000000

> m2
         purple    green     blue     red
purple 0.000000 0.081172 4.472136 6.708204
green  0.081172 0.000000 0.107647 4.472136
blue   4.472136 0.107647 0.000000 0.073217
red    6.708204 4.472136 0.073217 0.000000
我想将
m1
子集为一个新矩阵,该矩阵只包含与
m2
共有的行。最终结果应该如下所示:

> m3
            red      blue    green    
red    0.000000  4.472136 6.708204 
blue   4.472136  0.000000 2.236068 
green  6.708204  2.236068 0.000000 
请注意,在“真实”数据中,矩阵是数百维的。
subset
命令似乎用于参考自身对数据进行子集设置,而不是参考其他数据帧或矩阵?无论如何,我尝试创建一个匹配项索引,如下所示:

index <- m1 %in% m2 

index尝试类似于
merge(m1,m2,all.x=FALSE,all.y=TRUE,by=“colorrow”)
。首先,必须将每个矩阵的行名放入名为
colorrow

m3Perfect的列中!非常感谢。@amurphy:如果这是您想要的+1,那么您可能希望检查答案是否被接受,以获得预期输出的清晰问题
  m3<-m1[row.names(m1) %in% row.names(m2),]
               red   yellow     blue    green    black
    red   0.000000 2.236068 4.472136 6.708204 8.944272
    blue  4.472136 2.236068 0.000000 2.236068 4.472136
    green 6.708204 4.472136 2.236068 0.000000 2.236068


     m3[,rownames(m3)]
           red     blue    green
red   0.000000 4.472136 6.708204
blue  4.472136 0.000000 2.236068
green 6.708204 2.236068 0.000000