2016-09-01 17 views
0

以下は私のコードです。私は.idatで終わるすべてのファイル(〜20000)のリストを取得しようとしており、それぞれのファイルを関数illuminaio::readIDATで読み取っています。 1200個のファイルについての情報を読み書きした後mcapply:すべてのスケジュールされたコアでユーザコードにエラーが発生しました

library(illuminaio) 
library(parallel) 
library(data.table) 

# number of cores to use 
ncores = 8 

# this gets all the files with .idat extension ~20000 files 
files <- list.files(path = './', 
        pattern = "*.idat", 
        full.names = TRUE) 

# function to read the idat file and create a data.table of filename, and two more columns 
# write out as csv using fwrite 
get.chiptype <- function(x) 
{ 
    idat <- readIDAT(x) 
    res <- data.table(filename = x, nSNPs = nrow(idat$Quants), Chip = idat$ChipType) 
    fwrite(res, file.path = 'output.csv', append = TRUE) 
} 

# using mclapply call the function get.chiptype on all 20000 files. 
# use 8 cores at a time 
mclapply(files, FUN = function(x) get.chiptype(x), mc.cores = ncores) 

、私は次のようなメッセージが出ます:

Warning message: 
In mclapply(files, FUN = function(x) get.chiptype(x), mc.cores = ncores) : 
    all scheduled cores encountered errors in user code 

どのように私はそれを解決するのですか?

+0

彼らはdata.tableが書き込まれるだけで、ディレクトリとファイル名ですDESTDIRとdestfile – rawr

+0

何ですか。私はそれを削除します。 –

+0

あなたはまだエラーが発生しますか? – rawr

答えて

0

mclapply()を呼び出す場合、乱数の複数のストリームを許可する乱数ジェネレータを指定する必要がある場合があります。 Rバージョン2.14.0には、Pierre L'Ecuyerの複数の疑似乱数ジェネレータの実装があります。 「my.seed」のあらかじめ指定された値で、mclapply()呼び出しの前に、以下を追加し

試してみてください。

set.seed(my.seed, kind = "L'Ecuyer-CMRG"); 
関連する問題