Znajdowanie nakładających się zakresów między dwoma danymi przedziałowymi

Mam jedną tabelę ze współrzędnymi (start, end) ok. 500000 fragmentów i kolejna tabela z 60000 pojedynczych współrzędnych, które chciałbym dopasować do poprzednich fragmentów. To znaczy dla każdego rekordu zdtCoords stół muszę przeszukać rekorddtFrags stół mający to samochr istart<=coord<=end (i pobierztype z tego zapisudtFrags). Czy w ogóle warto w tym celu użyć R, czy raczej szukać w innych językach?

Oto mój przykład:

require(data.table)

dtFrags <- fread(
  "id,chr,start,end,type
 1,1,100,200,exon
 2,2,300,500,intron
 3,X,400,600,intron
 4,2,250,600,exon
")

dtCoords <- fread(
"id,chr,coord
 10,1,150
 20,2,300
 30,Y,500
")

Na koniec chciałbym mieć coś takiego:

"idC,chr,coord,idF,type
 10,  1,  150,  1, exon
 20,  2,  300,  2, intron
 20,  2,  300,  4, exon
 30,  Y,  500, NA, NA
"

Mogę nieco uprościć zadanie, dzieląc tabelę na podtabele wedługchr, więc skupiłbym się tylko na współrzędnych

setkey(dtCoords, 'chr')
setkey(dtFrags,  'chr')

for (chr in unique(dtCoords$chr)) {
  dtCoordsSub <- dtCoords[chr];
  dtFragsSub  <-  dtFrags[chr];
  dtCoordsSub[, {
    # ????  
  }, by=id]  
}

ale nadal nie jest dla mnie jasne, jak powinienem pracować w środku ... Byłbym bardzo wdzięczny za wszelkie wskazówki.

UPD. na wszelki wypadek umieściłem mój prawdziwy stół w archiwumtutaj. Po rozpakowaniu do katalogu roboczego można załadować tabele z następującym kodem:

dtCoords <- fread("dtCoords.txt", sep="\t", header=TRUE)
dtFrags  <- fread("dtFrags.txt",  sep="\t", header=TRUE)

questionAnswers(2)

yourAnswerToTheQuestion