推 locka: do.call(paste0, as.data.frame(A)) %in% do.call(paste0, 06/15 07:57
→ locka: as.data.frame(B)) 06/15 07:57
→ locka: 把每個row的值直接paste在一起成為一個新的字串組合(ex:1,4 06/15 07:59
→ locka: ,7直接變成"147")再跟B比,這樣A變成("147","12167",...) B 06/15 08:01
→ locka: 變成("147","258","369")這樣字串比對邏輯上可少一層loop 06/15 08:03
推 lycantrope: 變字串感覺會出事 matrix slice直接%in%比較省事 06/15 08:29
→ Wush978: 如果是 column 相同的話,可以用 abs(B - A[1,]) 然後和 06/15 09:23
→ Wush978: 0 比較來找。 06/15 09:23
推 locka: (舉手)想問7樓大大可能會出什麼事 哈哈 06/15 09:59
→ andrew43: 同lycantrope的想法,走訪各column做一個%in%。 06/15 11:25
→ andrew43: 要得到index就再包一個which()即可。 06/15 11:26
→ Gjerry: 直接合併成字串會有多對一的問題 e.g. 1, 23, 4 -> 1234 06/15 11:45
→ Gjerry: 12, 3, 4 -> 1234 06/15 11:45
→ Gjerry: 如果 A, B 都很大,每一個 row 先產生固定長度的 hash , 06/15 11:54
→ Gjerry: 然後再比對也是可行的做法 06/15 11:54
→ wgene: 謝謝各位 我是用2個loop加identical 再試試各位的方法 06/15 13:48
→ locka: 了解,感謝13樓Gjerry大說明~那可能就是paste時再加個逗號 06/15 14:03
→ locka: 之類的來解決,不過也感謝andrew43大跟lycantrope大分享的 06/15 14:03
→ locka: 方法!又學到了!哈 06/15 14:03
推 lycantrope: %in%應該也用hash去找值,paste字串再找有點畫蛇添足 06/15 16:16
推 locka: 懂~感謝提點! 06/15 16:24
→ lycantrope: 原來內建match不是最佳解w,可以用fastmatch更快一些 06/15 16:54
推 locka: 感謝樓上 wayturn 大大整理~ 06/15 17:53