2017-06-09 10 views
0

私は行列の列を合計したいこのコードを持っています。pbapplyを並列で使用できますか?

また、私は(私の行列は、以下の例よりもはるかに大きい)機能のカップルを持っていると思います:

  • は、プログレスバー

を持つ複数のコアを使用し、私はpbapplyを試してみましたpbapplyパッケージからは運がありません。私のコードは次のとおりです。

library(pbapply) 
library(parallel) 

mat <- matrix(ncol=20, nrow = 50, data = runif(1000)) 

# sum of the columns 
matsum <- apply(mat,2,sum) 

# now the same in parallel 
cl <- makeCluster(2) 
pboptions(type = "txt") 
parmat <- pbapply(mat,2,sum, cl=cl) 
stopCluster(cl) 

これはエラーにつながる:、

Error in FUN(newX[, i], ...) : invalid 'type' (list) of argument

私の質問は、それは並列でpbapply実行することで、すべての可能ですか?

答えて

1

pbapply引数はclではありません。しかし、あなたの行列をdata.frameに変換することは可能です(実行可能な場合)。そして、カラムで動作するはずのsapplyを使用してください。

mat <- as.data.frame(mat) 
parmat <- pbsapply(X = mat, FUN = sum, cl = cl) 

それとも、あなたはかなりの主力を魅惑され

colSums(mat) 

を試みることができます。

+0

を 'V 1.3から3以来cl引数を受け付けません!ありがとう! – smoff

1

pbapply::pbapplyは(NEWSを参照)完璧に動作pbsapply`

関連する問題