-1

foreach パッケージを使用して for ループを並列処理したい:

元のコードは次のようになります。

data_df=data.frame(...) # the data frame where original data stored
result_df=data.frame(...) # the data frame where result data to be stored

for(i in 1:10)
{
     a=data_df[i,]$a
     b=data_df[i,]$b
     sum_result=a+b
     sub_result=a-b
     result_df[i,]$sum_result=sum_result
     result_df[i,]$sub_result=sub_result
}

データフレームからデータを取得し、データを別のデータフレームに戻すために、インデックス i を行番号として使用しました。

ただし、変更すると:

for(i in 1:10)

foreach( i=1:10) %dopar% 

非常に高速に実行されますが、結果はデー​​タ フレームの 1 つの列にしか格納されないようです。2 つの列をまとめて保存するにはどうすればよいですか?

並列化するには、共有データ フレームをどのように記述すればよいですか?

data_df のサンプル データ

a   b
1   1
2   4
4   8
9   6
2   3
4

2 に答える 2

1

あなたが使用する必要があります.combine = rbind

result = foreach(i = 1:5, .combine = rbind) %dopar% {
  data.frame(x = runif(40), i = i)
}

> head(result)
          x i
1 0.2777559 1
2 0.2126995 1
3 0.2847905 1
4 0.8950941 1
5 0.4462353 1
6 0.7799849 1
于 2016-11-11T08:58:56.990 に答える