R(foreach + doParallelパッケージ)で "foreach"ループを使いたいのですが、私の仕事でループがいくつかのNAを返し、古典的な "for"ループが値を返します私がしたい:rでforeachループを使うNAを返す
library(foreach)
library(doParallel)
ncore=as.numeric(Sys.getenv('NUMBER_OF_PROCESSORS'))-1
registerDoParallel(cores=ncore)
B=2
a = vector()
b = vector()
foreach(i = 1:B, .packages = "ez",.multicombine = T,.inorder = T, .combine = 'c')%dopar%{
a[i] = i + 1
return(a)
}
for(i in 1:B){
b[i] = i + 1
b
}
あなたがオブジェクト「b」は2と3を(それは私が欲しいものです)を返しながら、「」2、NAとのベクトルを返し、3、オブジェクト、それをしようとした場合、あなたが見ることができるように。
「NA」は私の結果でありますなぜ私は実際にforeach
がグローバルオブジェクトa
は変更されませんので、これはある...
foreachループのretrunは 'i = 1、a = c(2)'ですが、 'i = 2'は' a = c(NA、3) 'です。単一のループごとに空です。 forループ内では、2回目に呼び出されても、それはもはや空ではありません。したがって、 '.combine'ではc(2、NA、3)に加算されます。 –
すぐにお返事ありがとうございます!それがどのように動作するのか理解しやすくなりました! – Rhevan