如何将范围转换为个别位置

时间:2017-02-22 12:56:24

标签: r dataframe bioinformatics

我有一个巨大的"范围"数据,这个数据是GenomicRanges格式,如果我把它转换为data.frame,举个例子:

file <- "seqnames start end width strand 
chr1  2  5  4      *
chr2  3  7  5      *"
file<-read.table(text=file,header=T)

我想分解这个&#34;范围&#34;在这个例子的个别位置:

file2 <- "seqnames Position 
chr1  2
chr1  3
chr1  4
chr1  5
chr2  3
chr2  4
chr2  5
chr2  6
chr2  7"

file2 <- read.table(text=file2,header=T)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我们可以使用data.table

library(data.table)
setDT(file)[, .(position = start:end), by = seqnames]

#    seqnames position
# 1:     chr1        2
# 2:     chr1        3
# 3:     chr1        4
# 4:     chr1        5
# 5:     chr2        3
# 6:     chr2        4
# 7:     chr2        5
# 8:     chr2        6
# 9:     chr2        7