比方說,我有不同尺寸的兩個相似矩陣,並與他們的一些共同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)中的值執行一些基本算術運算。希望這是有道理的。
非常感謝提前!
+1對於預期輸出的明確問題 –