IRangesパッケージのnarrowにおけるstart

例によってR言語上級ハンドブックを使った勉強会からのネタ。

Section26でBioconductorのIRangesパッケージを使った区間データの取り扱いのところで出てくるnarrow関数の引数がわかりにくかった。

narrow関数

こんな感じで区間を狭める

# Bioconductor のインストール
> source("http://bioconductor.org/biocLite.R")
> biocLite("IRanges")

# データの生成
> y.start <- seq.int(4, 22, by = 6)
> y.end   <- seq.int(7, 30, by = 6)

# IRanges オブジェクトに格納する
> y <- IRanges(y.start, y.end)
> y
> y
IRanges of length 4
    start end width
[1]     4   7     4
[2]    10  13     4
[3]    16  19     4
[4]    22  25     4

> narrow(y, start=1:3, width=2)
IRanges of length 4
    start end width
[1]     4   5     2
[2]    11  12     2
[3]    18  19     2
[4]    22  23     2

このnarrowの引数のstartがピンとこなかった。

このstartは各区間の何番目から開始するかという値でベクトルで与えると対応する区間が指定した場所からのスタートになる。
上の例だとc(1,2,3)というベクトルが与えられているので

  • 区間1(4〜7)では1番目の4から
  • 区間2(10〜13)では2番めの11から
  • 区間3(16〜19)では3番目の18から

となる。与えられなかった区間4(22〜25)では1番目の22から始まっている。

またendという引数もあって同様に終わるところを指定できる。