2

同じ Gene_idを持つが、開始座標の最小値を持つ行を選択しようとしています: href_pos$start. メモリ制限が ~ 16Gb であるにもかかわらず、このエラーが発生するのはなぜですか? または、私は何を間違っていますか?次のコードがあります。

頭(href_pos, 5)

    chr      region    start      end strand nu   gene_id
1  chr1 start_codon 67000042 67000044      +  . NM_032291
2  chr1         CDS 67000042 67000051      +  0 NM_032291
3  chr1        exon 66999825 67000051      +  . NM_032291
4  chr1         CDS 67091530 67091593      +  2 NM_032291
5  chr1        exon 67091530 67091593      +  . NM_032291

d1 <- ddply(as.data.frame(href_pos), "gene_id", function(href_pos) href_pos[which.min(href_pos$start), ])
エラー: サイズ 283 Kb のベクトルを割り当てられません さらに: 警告メッセージ:
1: lapply(dfs, function(df) levels(df[[var]])) : 16383Mb の合計割り当てに達しました: help(memory.size) を参照してください

4

1 に答える 1

0

構文が正しいことの証明:

#Create a minimal, reproducible example
gene_id <- gl(3, 3, 9, labels <- letters[1:3])
start <- rep(1:3, 3)
href_pos <- data.frame(gene_id=gene_id, start=start)

d1 <- ddply(as.data.frame(href_pos), "gene_id", function(href_pos) href_pos[which.min(href_pos$start), ])
 gene_id  start
1      a      1
2      b      1
3      c      1

data.tableチェイスが示唆するようにそれを行うには、これはうまくいくはずです:

require(data.table)
HREF_POS <- data.table(href_pos)
setkey(HREF_POS, gene_id)
MINS <- HREF_POS[HREF_POS[,start] %in% HREF_POS[ ,min(start), by=gene_id]$V1,]
于 2012-10-27T19:35:04.173 に答える