ubuntu 14.04のR 3.2.0で使用fread
しforeach
てパッケージ化しました。doParallel
を使用していなくても、次のコードは問題なく動作しますregisterDoParallel
。
library(foreach)
library(doParallel)
library(data.table)
write.csv(iris,'test.csv',row.names=F)
cl<-makeCluster(4)
tmp<-foreach(i=1:10) %dopar% { t <- fread('test.csv') }
tmp<-rbindlist(tmp)
stopCluster(cl)
ただし、Windows 7 に切り替えると、「registerDoParallel」の有無にかかわらず機能しなくなります。
library(foreach)
library(doParallel)
#library(doSNOW)
library(data.table)
write.csv(iris,'test.csv',row.names=F)
cl<-makeCluster(4)
registerDoParallel(cl)
#registerDoSNOW(cl)
tmp<-foreach(i=1:10) %dopar% { t <- fread('test.csv') }
tmp<-rbindlist(tmp)
stopCluster(cl)
「doSNOW」パッケージも機能しません。以下はエラーメッセージです。
Error in { : task 1 failed - "could not find function "fread""
誰か似たような経験がありますか?
フォローアップの質問は、ネストされたに関するものforeach
です。以下はうまくいかないようです。
cl<-makeCluster(4)
registerDoParallel(cl)
clusterEvalQ(cl , library(data.table))
tmp<-foreach(j=1:10) %dopar% {
tmp1<-foreach(i=1:10) %dopar% {
t<-fread('test.csv',data.table=T)
}
rbindlist(tmp1)
}
stopCluster(cl)