0
我有一個巨大的數據框df
,其中包括重疊間隔(A)和(B)以及它們所在的染色體(染色體)的信息。還有關於區間(A)觀察到的值(基因表達水平)的信息。R - 從幾列中檢索特定信息
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)將已經報道了兩次,如果它具有兩個(A)的時間間隔重疊:
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)將已報導兩次或更多次,如果它具有兩個或多個(B)的時間間隔重疊:
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
感謝您結束了48小時的挫折! :D – biohazard
你知道我怎樣才能避免在「」之間獲得所有輸出值? – biohazard
@biohazard只需將所有內容包裝在'as.data.frame'中即可。 – tchakravarty