使用'doParallel'包在R中并行处理

时间:2015-11-27 17:03:01

标签: r foreach doparallel

我有一个从2迭代到指定值的循环(即columnCount)。 i的值是至关重要的,因为在循环内发生的所有计算都取决于i的值。

循环片段:

   > x1=runif(900000,9999,90999)
   > x2=runif(900000,0,9)
   > x3=runif(900000,5000,80000)
   > y=rep(0:1,450000)
   > data=data.frame(y,x1,x2,x3)
   > dim(data)
    [1] 900000   4 
   > columnCount = ncol(data)
   > yVar = names(data[1])

for (i in 2:columnCount) {  
    xVar[i] = names(data[i])
    result <- smbinning(df=data,y=yVar,x=xVar[i],p=0.05)
    }

注意:Y列始终是常量,而x列在每个步骤中迭代1(实际数据帧有250+列)。如何将其翻译为以便我可以使用:

library(foreach)
library(doParallel)

foreach(icount(iters)) %dopar% {

1 个答案:

答案 0 :(得分:1)

如何使用并行包中的mclapply。像下面的例子:

require(smbinning) # caveat: I never used this package
data(iris) 

names(iris) <- gsub("\\.","",names(iris)) # didn't like dots
mclapply(2:NCOL(iris), function(varb) 
smbinning(df = iris[,c(1,varb)], 
            y = names(iris[,c(1,varb)])[1], 
            x = names(iris[,c(1,varb)])[2],
            p = 0.05))