У меня есть два data.frames каждый с тремя столбцами: chrom, start & stop, давайте назовем их rangeA и rangeB.Для каждой строки диапазонов A я ищу, чтобы найти, какая строка (если есть) в rangeB полностью содержит строку rangeA - под этим я подразумеваю rangesAChrom == rangesBChrom, rangesAStart >= rangesBStart and rangesAStop <= rangesBStop
.
. Сейчас я делаю следующее, котороеМне просто не очень нравится.Обратите внимание, что я зацикливаюсь на строках диапазонов A по другим причинам, но ни одна из этих причин, вероятно, не будет иметь большого значения, это просто в конечном итоге делает вещи более читабельными, учитывая это конкретное решение.
rangeA:
chrom start stop
5 100 105
1 200 250
9 275 300
диапазоны B:
chrom start stop
1 200 265
5 99 106
9 275 290
для каждой строки в диапазонах A:
matches <- which((rangesB[,'chrom'] == rangesA[row,'chrom']) &&
(rangesB[,'start'] <= rangesA[row, 'start']) &&
(rangesB[,'stop'] >= rangesA[row, 'stop']))
Я полагаю, что должно быть лучше (и лучше, я имею в виду быстреена больших экземплярах rangeA и rangeB) способ сделать это, чем зацикливание на этой конструкции.Есть идеи?