私はm×nの行列M1とk×lの行列M2をl< = nとします。私はそれにM2のいくつかの行を含むM1のすべての行を見つけるしたい。行1は、どのように1と3と最後の行8および9他の行列の行を含む行列の行を見つける
が含まれているとして、次に行1とM1の3は、条件を満たし
> M1 <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, ncol = 3, byrow = TRUE)
> M2 <- matrix(c(1,3,8,9), nrow = 2, ncol = 2, byrow = TRUE)
> M1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> M2
[,1] [,2]
[1,] 1 3
[2,] 8 9
:たとえば
は、次のような状況を考えますこれを効率的な方法で達成するには?私はループを使ってコードを書いていますが、非常に大きな行列で作業するので、この解決には多くの時間がかかります。
テーブル(行(M1)、係数(M1,1:9))とテーブル(行(M2)、係数(M2、1:9) ) 'である。そうすれば、行間の関係をより簡単に見つけることができます。スパースな選択肢に落ちるので、それ以来、メモリの問題、 'ライブラリ(行列); tab1 = sparseMatrix(i =行(M1)、j = M1、x = 1L)。 tab2 = sparseMatrix(i =行(M2)、j = M2、x = 1L)。 tcrossprod(tab1、tab2) 'です。最後のオブジェクトは、「M1」と「M2」の各行間の同時発生をカウントし、結果を抽出するために「nrow(M2)」と比較することができます。 –
@StefanH以下の回答のいずれかがあなたの問題を解決した場合は、それを合格とマークすることを検討してください。 –