4

これは非常に簡単な例です。

df = c("already ","miss you","haters","she's cool")
df = data.frame(df)

library(doParallel)
cl = makeCluster(4)
registerDoParallel(cl)    
foreach(i = df[1:4,1], .combine = rbind, .packages='tm')  %dopar% classification(i)
stopCluster(cl)

実際には、n=400000 行のデータフレームがあります。各クラスターの nrow/ncluster データを 1 ステップで送信する方法がわかりません。i = ?

ライブラリ(itertools)のisplitRowsを試してみましたが、成功しませんでした。

4

3 に答える 3

6

インデックスを操作して、データのサブセットを作成するようにしてください。

foreach(i = nrow(df), .combine = rbind, .packages='tm')  %dopar% {
  tmp <- df[i, ]
  classification(tmp)
}

data.frameこれにより、反復ごとに新しい行が取得されます。

さらに、foreach ループの結果が新しい変数に書き込まれることに注意してください。したがって、次のように割り当てる必要があります。

res <- foreach(i = 1:10, .combine = c, ....) %dopar% {
  # things you want to do
  x <- someFancyFunction()

  # the last value will be returned and combined by the .combine function
  x 
}
于 2016-09-29T08:40:15.487 に答える