使用概率对GRanges对象行进行采样

时间:2016-07-15 09:45:18

标签: r bioinformatics sampling bioconductor

我有以下对象variable1

GRanges object with 25605 ranges and 2 metadata columns:
              seqnames             ranges strand   |  totgenes   density
                 <Rle>          <IRanges>  <Rle>   | <integer> <numeric>
      [1]         chr1 [3000001, 3100000]      *   |         2       0.2
      [2]         chr1 [3100001, 3200000]      *   |         1       0.1
      [3]         chr1 [3200001, 3300000]      *   |         1       0.1
      [4]         chr1 [3300001, 3400000]      *   |         1       0.1
      [5]         chr1 [3400001, 3500000]      *   |         2       0.2
      ...          ...                ...    ... ...       ...       ...
  [25601] chrUn_random [1600001, 1700000]      *   |         0         0
  [25602] chrUn_random [1900001, 2000000]      *   |         0         0
  [25603] chrUn_random [2100001, 2200000]      *   |         0         0
  [25604] chrUn_random [2400001, 2500000]      *   |         0         0
  [25605] chrUn_random [5900001, 5900358]      *   |         0         0

我想从这个对象中随机取100行。为此:

sample(variable1, 100)

但是,我想根据密度列使用prob=进行抽样。我可以这样做:

sample(sort(unique(variable1$density)), prob=table(sort(variable1$density))/25605, replace=TRUE, size=100)

但是那样,我只得到密度值。我想得到整行。

1 个答案:

答案 0 :(得分:0)

应该这样做:

sam <- sample(variable1, size = 100, replace = TRUE, prob = variable1$density)

可以使用$访问GRanges对象中的元数据列(位于上面一行的右侧),就像在数据框中一样。