2017-08-16 6 views
0

行が行列m2の行に含まれている場合、行列m1の行を保持するだけの効率的な方法はありません。行列m2は、行列m1の行と一致する必要のないNAを含むことができる。次の例を参照してくださいR行列の行をNAsを省略した他の行列で利用できる場合

m1 = matrix(c(1:6), ncol=2, byrow = T) 
m2 = matrix(c(NA, 4, NA, 2), ncol=2, byrow=T) 

一方がなければならないコードM1を実行した後:

enter image description here

M1のカラム2がM2のカラム2に一致するので、マトリックスm1は(行1を保持NAは省略しなければなりません)。さらに、m1の列2がm2の列1と一致するので、行列m1は行2を保持する。 パフォーマンスを高く保つために、ループで解決するのは理想的ではありません。それは大きな行列のために走らなければならない。 助けてくれてありがとう!

答えて

0

私が正しく理解していれば、以下のようになるでしょう。

inx <- m1[, 1] %in% m2[, 1] | m1[, 2] %in% m2[, 2] 
m1[inx, ] 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 
関連する問題