Существует ли быстрый способ нахождения строк в матрице A в матрице B? , например.Сравнение строк между двумя матрицами
m1 = matrix(c(1:6), ncol=2, byrow = T); m2 = matrix(c(1:4), ncol=2, byrow=T);
и результат будет 1, 2.
матрицы не имеют одинаковое количество строк (количество столбцов и то же), и они несколько большие - от 10^6 - 10^7 количество строк.
Самый быстрый способ сделать это, что я знаю сейчас, это:
duplicated(rbind(m1, m2))
Tnx!
Ваше решение с 'duplicated' также возвратит любые строки, которые будут повторяться внутри матрицы, даже если она появляется только в одной из двух матриц. Во всяком случае, ответ @ MatthewDowle велик. –
'data.table' может быть быстрее, потому что он не использует' do.call («вставить» 'под капот. Если вы предпочитаете' duplicated' в 'M2 [M1]', то 'duplicated (as.data.table (rbind (m1, m2))) 'может быть быстрее по той же причине. Заинтересованы в ваших таймингах. –
@ Давид. О, да, хорошая точка зрения о« дублированном »подходе. –