Schnittbereiche reduzieren

Ich versuche, einen Weg zu finden, um Zeilen mit sich überschneidenden Bereichen, die durch "Start" - und "Stopp" -Spalten gekennzeichnet sind, zu reduzieren und die reduzierten Werte in neuen Spalten aufzuzeichnen. Zum Beispiel habe ich diesen Datenrahmen:

my.df<- data.frame(chrom=c(1,1,1,1,14,16,16), name=c("a","b","c","d","e","f","g"), start=as.numeric(c(0,70001,70203,70060, 40004, 50000872, 50000872)), stop=as.numeric(c(71200,71200,80001,71051, 42004, 50000890, 51000952)))


chrom name  start   stop
 1    a        0    71200
 1    b    70001    71200
 1    c    70203    80001
 1    d    70060    71051
14    e    40004    42004
16    f 50000872 50000890
16    g 50000872 51000952

Und ich versuche, die überlappenden Bereiche zu finden und den größten Bereich aufzuzeichnen, der von den überlappenden reduzierten Zeilen in "start" und "stop" und den Namen der reduzierten Zeilen abgedeckt wird.

chrom start   stop      name
 1    70001    80001    a,b,c,d
14    40004    42004    e
16    50000872 51000952 f,g

Ich denke, ich könnte die Pakete IRanges wie folgt verwenden:

library(IRanges)
ranges <- split(IRanges(my.df$start, my.df$stop), my.df$chrom)

Aber dann habe ich Probleme, die eingeklappten Spalten zu bekommen: Ich habe es mit findOvarlaps versucht, aber dies

ov <- findOverlaps(ranges, ranges, type="any")

aber ich denke nicht, dass das richtig ist.

Jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage