У меня есть большой список последовательностей ДНК {A, C, T, G} (всего 100 000 списков, каждый с 3000 символов). Мне нужно проанализировать эти списки попарно, начиная с 1-го списка и сравнивая его со 2-м, 3-м, 4-м, ..., 100 000-м. Затем перейдите ко 2-му списку и сравните его с 3-м, 4-м, ..., 100 000-м и т. Д.
В каждом парном сравнении мне нужно найти индексы уникальных комбинаций элементов. Например:
List1 = "A", "C", "A", "G", "T", "A", "C", "T", "C ".
List2 =" A "," G "," G "," G "," C "," A "," G "," G "," C " .
Мой желаемый результат:
AA = {1, 6}
CG = {2, 7}
AG = {3}
GG = {4}
T C = {5}
TG = {8}
CC = {9}
Я пытался кодировать это, используя Rcpp
с for
циклами и if/else
операторами, но это оказывается довольно медленным. Использование R
функций, таких как apply, unique, etc.
, похоже, работает даже медленнее! Я даже пытался кодировать эти символы с помощью целых чисел, но не заметил улучшения.
Просто интересно, может ли кто-нибудь придумать более быстрый способ сделать это ...
Спасибо!