Auffinden überlappender Bereiche zwischen zwei Intervalldaten

Ich habe eine Tabelle mit Koordinaten (start, end) von ca. 500000 Fragmente und eine weitere Tabelle mit 60000 Einzelkoordinaten, die ich mit den früheren Fragmenten abgleichen möchte. Das heißt, für jeden Datensatz vondtCoords Tabelle, in der ich einen Datensatz suchen mussdtFrags Tisch mit dem gleichenchr undstart<=coord<=end (und holen Sie dietype aus dieser Aufzeichnung vondtFrags). Ist es überhaupt eine gute Idee, dafür R zu verwenden, oder sollte ich lieber auf andere Sprachen schauen?

Hier ist mein Beispiel:

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
")

Am Ende hätte ich gerne so etwas:

"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
"

Ich kann die Aufgabe ein wenig vereinfachen, indem ich die Tabelle in Untertabellen aufteilechrIch würde mich also nur auf die Koordinaten konzentrieren

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

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

aber es ist mir immer noch nicht klar, wie ich drinnen arbeiten soll ... ich wäre für jeden hinweis sehr dankbar.

UPD. für alle fälle stelle ich meinen echten tisch ins archivHier. Nach dem Entpacken in Ihr Arbeitsverzeichnis können Tabellen mit folgendem Code geladen werden:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage