假设我有两个不同维度的相似性矩阵,其中一些相似row.names
但顺序不同,例如:
> 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
这很好,但是在尝试使用 cbind 或 for 循环将此对象转换为新矩阵时出现错误。我知道必须有一种相当快速或优雅的方式来做到这一点,但是关于这个主题的文档似乎有点简洁。理想情况下,在转换m1
为之后m3
,我想对 和 的匹配元素中的值执行一些基本的算术运算,m2
例如m3
m2(2,3) - m3(3,2) = -2.128421。希望这是有道理的。
提前谢谢了!!