这是我假设一个有点简单的编程问题,但我一直在努力解决它。主要是因为我不知道该用什么词,也许吧?
给定一组“范围”(以 1-一组如下数字、2-IRanges 或 3-GenomicRanges 的形式),我想将其拆分为一组较小的范围。
示例开头:
Chr Start End
1 1 10000
2 1 5000
中断的示例大小:2000
新数据集:
Chr Start End
1 1 2000
1 2001 4000
1 4001 6000
1 6001 8000
1 8001 10000
2 1 2000
2 2001 4000
2 4001 5000
我在 R 中这样做。我知道我可以简单地生成这些seq
,但我希望能够基于区域列表/df 来完成它,而不是每次我有一个新列表时都必须手动执行它的地区。
这是我使用 seq 制作的示例:
给定 22 条染色体,遍历它们并将每条染色体分成几块
# initialize df
Regions <- data.frame(Chromosome = c(), Start = c(), End = c())
# for each row, do the following
for(i in 1:nrow(Chromosomes)){
# create a sequence from the minimum start to the max end by some value
breks <- seq(min(Chromosomes$Start[Chromosomes$Chromosome == i]), max(Chromosomes$End[Chromosomes$Chromosome == i]), by=2000000)
# put this into a dataframe
database <- data.frame(Chromosome = i, Start = breks, End = c(breks[2:length(breks)]-1, max(Chromosomes$End[Chromosomes$Chromosome == i])))
# bind with what we already have
Regions <- rbind(Regions, database)
rm(database)
}
这很好用,我想知道是否已经在包中内置了一些东西可以作为单线或者更灵活,因为这有其局限性。