首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将范围转换为单个位置

如何将范围转换为单个位置
EN

Stack Overflow用户
提问于 2017-02-22 20:56:24
回答 2查看 81关注 0票数 1

我有一个巨大的“范围”数据,这个数据是GenomicRanges格式的,如果我把它转换成data.frame,下面是一个例子:

代码语言:javascript
代码运行次数:0
运行
复制
file <- "seqnames start end width strand 
chr1  2  5  4      *
chr2  3  7  5      *"
file<-read.table(text=file,header=T)

我想将这个“范围”分解到各个位置,比如下面的例子:

代码语言:javascript
代码运行次数:0
运行
复制
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)

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 21:02:27

如果使用Bioconductor GenomicRanges,则

代码语言:javascript
代码运行次数:0
运行
复制
> GPos(GRanges(c("chr1:2-5", "chr2:3-7")))
GPos object with 9 positions and 0 metadata columns:
      seqnames       pos strand
         <Rle> <integer>  <Rle>
  [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      *
  -------
  seqinfo: 2 sequences from an unspecified genome; no seqlengths

也许是第一个

代码语言:javascript
代码运行次数:0
运行
复制
GRanges(file)
票数 2
EN

Stack Overflow用户

发布于 2017-02-22 21:14:15

我们可以使用data.table

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42392140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档