将结果写入foreach循环R中的文件

时间:2015-07-07 17:32:47

标签: r foreach

我正在使用带有%dopar%的foreach包来实现一组模拟。这个简单的版本说明了模拟的结构:

library(foreach)
library(doMC)
registerDoMC(4) 

id.list <- c(1:3000)

results <- foreach(i=1:1000,.combine=rbind) %dopar% {

    ## Randomly draw 100 donor pool units and 1 treated unit
    v1 <- sample(id.list, 1, replace = FALSE)  
    v2 <- sample(id.list, 1, replace = FALSE)
    v3 <- sample(id.list, 1, replace = FALSE)
    v4 <- sample(id.list, 1, replace = FALSE)

    c(i,v1,v2,v3,v4)
}

我想在循环仍在运行时将此循环的结果写入.csv文件或类似的东西。例如,当循环达到迭代500时,我想将前500行写入.csv。

或者,当我遇到迭代500时,我会打开循环,同时提取前500行结果。

在foreach中是否有可能这样的事情?

1 个答案:

答案 0 :(得分:0)

说,而不是1000个trys,你要去10000,我会像这样分解它,使用part_num来区分大小为500的块

library(foreach)
library(doMC)
registerDoMC(4) 

id.list <- c(1:3000)

for(part_num in 1:20){
  results <- foreach(i=1:500,.combine=rbind) %dopar% {
    ## Randomly draw 100 donor pool units and 1 treated unit
    v1 <- sample(id.list, 1, replace = FALSE)  
    v2 <- sample(id.list, 1, replace = FALSE)
    v3 <- sample(id.list, 1, replace = FALSE)
    v4 <- sample(id.list, 1, replace = FALSE)
    c(i,v1,v2,v3,v4)
  }

  write.csv(results, file = paste('part', part_num, '.csv', sep = ''))
}