df
重複する間隔 (A) と (B) に関する情報と、それらが配置された染色体 (クロム) に関する情報を含む巨大なデータフレームがあります。間隔 (A) にわたって観察された値 (遺伝子発現のレベル) に関する情報もあります。
chrom value Astart Aend Bstart Bend
chr1 0 0 54519752 17408 17431
chr1 0 0 54519752 17368 17391
chr1 0 0 54519752 567761 567783
chr11 0 2 93466832 568111 568133
chr11 0 2 93466832 568149 568171
chr11 0 2 93466832 1880734 1880756
chr11 4 93466844 93466880 93466856 93466878
chr11 2 93466885 135006516 93466889 93466911
chr11 2 93466885 135006516 94199710 94199732
同じ間隔が複数回表示される場合があることに注意してください。たとえば、間隔 (B) が 2 つの間隔 (A) と重なっている場合、間隔 (B) は 2 回報告されます。
Astart(1)=========================Aend1 Astart(2)========================Aend(2)
Bstart(1)=======================================Bend(1)
chrom value Astart Aend Bstart Bend
chr1 0 0 25 15 35 #A(1) and B(1) overlap
chr1 1 28 45 15 35 #A(2) and B(1) overlap
同様に、間隔 (A) が 2 つ以上の (B) 間隔と重複する場合、2 回以上報告されます。
Astart(3)===================================================================Aend(3)
Bstart(2)=========Bend(2) Bstart(3)===========Bend(3) Bstart(4)===============Bend(4)
chrom value Astart Aend Bstart Bend
chr4 0 10 100 15 25 #A(3) and B(2) overlap
chr4 0 10 100 30 75 #A(3) and B(3) overlap
chr4 3 10 100 80 120 #A(3) and B(4) overlap
私の目標は、間隔 (B) からのすべての個々の位置と (A) からの対応する値を出力することです。(B) で関連するすべての位置を美しく出力するコードがあります。
position <- unlist(mapply(seq, ans$Bstart, ans$Bend - 1))
> head(position)
[1] 17408 17409 17410 17411 17412 17413
これに関する問題は、そこから染色体情報を取得するだけでは十分でないことです。これらの位置をリストするときに、染色体情報と位置を同時に確認する必要があります。for position %in% range(Astart, Aend) output $chrom, $value
これは、同じ位置整数が複数の染色体で発生する可能性があるためです。そのため、後で(ダミー コード)のようなものを実行することはできません。
(chrom, position, value)
同時に取得するにはどうすればよいですか?
期待される結果は次のようになります。
> head(expected_result)
chrom position value
chr1 17408 0
chr1 17409 0
chr1 17410 0
chr1 17411 0
chr1 17412 0
chr1 17413 0
#skipping some lines to show another part of the dataframe
chr11 93466856 4
chr11 93466857 4