【发布时间】:2013-06-02 04:16:42
【问题描述】:
我正在尝试找到一种方法来折叠具有相交范围的行,由“开始”和“停止”列表示,并将折叠的值记录到新列中。例如我有这个数据框:
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
我正在尝试查找重叠范围并记录“开始”和“停止”中折叠的重叠行所覆盖的最大范围以及折叠行的名称,所以我会得到这个:
chrom start stop name
1 70001 80001 a,b,c,d
14 40004 42004 e
16 50000872 51000952 f,g
我想我可以像这样使用包 IRanges:
library(IRanges)
ranges <- split(IRanges(my.df$start, my.df$stop), my.df$chrom)
但是我在获取折叠列时遇到了麻烦:我尝试过使用 findOvarlaps 但是这个
ov <- findOverlaps(ranges, ranges, type="any")
但我认为这是不对的。
任何帮助将不胜感激。
【问题讨论】:
-
我通过在开始 0 处添加第一个位置来编辑文本以更好地反映数据。使用任何一种方法建议 chrom 14 未正确分组,您能帮我理解为什么吗?谢谢!
标签: r bioinformatics overlap