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