是否可以并行使用pbapply?

时间:2017-06-09 06:10:31

标签: r parallel-processing

我有这个代码,我想要对矩阵的列求和。

我也希望有一些功能(我的矩阵比下面的例子大得多):

  • 使用多核
  • 有进度条

我在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)

这会导致错误:

  

FUN中的错误(newX [,i],...):无效&#39;键入&#39;参数(列表)

我的问题是,是否有可能并行运行pbapply?

2 个答案:

答案 0 :(得分:1)

pbapply不接受cl参数,所以没有。但是,您可以将矩阵转换为data.frame(如果可行),并使用sapply,它应该适用于列。

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

或者,您可以尝试

colSums(mat)

这是非常拉扯的主力。

答案 1 :(得分:1)

从v 1.3-3开始,

pbapply::pbapply接受cl参数(参见NEWS