Matris A'da hangi satırların matris B'de bulunduğunu bulmanın hızlı bir yolu var mı? , ör.İki matris arasındaki satırların karşılaştırılması
m1 = matrix(c(1:6), ncol=2, byrow = T); m2 = matrix(c(1:4), ncol=2, byrow=T);
ve sonuç 1 olur, 2.
matrisler sıra (sütun sayısı aynıdır), ve biraz büyük aynı sayıda yok - 10^6 - 10^7 satır sayısı.
şimdilik bildiğim bunu yapmanın en hızlı yolu, şöyledir:
duplicated(rbind(m1, m2))
Tnx!
duplicated' 'Your çözüm de iki matrisin sadece birinde görünse bile, bir matris içinde tekrarlanan olsun tüm satırları dönecekti. Her neyse, MatthewDowle'in cevabı harika. –
'data.table', daha hızlı olabilir çünkü" do.call "(" paste ") kaputun altında kullanılmaz. Eğer' M2 [M1] 'e çoğaltmayı tercih ederseniz' çoğaltılamaz (as.data.table (rbind (m1, m2))) 'aynı nedenle, daha hızlı olabilir. ilgileniyor senin zamanlamalarını görmek için. –
@ David Oh evet,' duplicated' yaklaşımı hakkında iyi bir noktaya. –