1

我对 R 比较陌生,我正在尝试编写一个排列来以 10 个块为单位旋转我的 p 值。这是我的数据的头部。

> head(knockdown, n=10)
chrs position    pval gene_symbol  Site_Class
2L     4998 0.73842731     CG11023 UPSTREAM  
2L     4998 0.73842731      l(2)gl DOWNSTREAM
2L     5092 0.18879142     CG11023 UPSTREAM
2L     5092 0.18879142      l(2)gl DOWNSTREAM
2L     5095 0.15217914     CG11023 UPSTREAM
2L     5095 0.15217914      l(2)gl DOWNSTREAM
2L     5317 0.00000209     CG11023 UPSTREAM
2L     5317 0.05224209      l(2)gl DOWNSTREAM
2L     5372 0.64378453      l(2)gl DOWNSTREAM
2L     5372 0.64378453     CG11023 UPSTREAM

我想pval在 10 行块中旋转 10 次,每次旋转都提取小于 1e-5 的gene_symbol相关Site_class信息。pval由此我希望看到不同gene_symbol的值通过,但是它们将在块内保持其初始结构,即如果显着 p 值位于第一个块的第 7 行,它将位于第 17 行第一次旋转和关联不同gene_symbol。谢谢你的帮助。

4

2 回答 2

0

获取您感兴趣的 110 个 p 值的索引

idx <- which(knockdown$pval < 1e-5)

轮换如下(我认为我的 1 是正确的——R 是基于 1 的);访问新索引处的值,例如,

step <- 10000
for (i in seq_len(1000)) {
    idx <- ((idx + step - 1) %% nrow(knockdown)) + 1
    ## do something with these?
    knockdown$gene_symbol[idx]
}
于 2013-10-10T03:54:17.513 回答
0

使用模除法拆分成连续的 10 长块组,然后返回满足 pval 标准的行:

knockdown <- rbind(knockdown, knockdown)
lapply( split(knockdown, 0:(nrow(knockdown)-1) %/% 10), 
       function(df) df[df$pval < 1e-5, ])
$`0`
  chrs position     pval gene_symbol Site_Class
7   2L     5317 2.09e-06     CG11023   UPSTREAM

$`1`
   chrs position     pval gene_symbol Site_Class
17   2L     5317 2.09e-06     CG11023   UPSTREAM
于 2013-10-10T08:54:44.927 回答