r - 将结果写入foreach循环R内的文件

标签 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 中有这样的可能吗?

最佳答案

比方说,不是尝试 1000 次,而是尝试 10000 次,我会像这样分解它,使用 part_num 来区分大小为 500 的 block

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 = ''))
}

关于r - 将结果写入foreach循环R内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31275560/

相关文章:

php - 为 foreach() 提供的参数无效 - 但脚本仍然有效

r - 使用ggplot时出现"Error: No layers in plot"

r - 按位置分割向量

regex - R 中包含非 ASCII 字符的正向后查找

r - 如何处理来自地理编码的错误(ggmap R)

scala - Scala中的foreach循环

r - 使用 zoo 包创建数据框 ts 时出错

regex - 基于正则表达式在 Perl 中的 foreach 中制作数组的动态哈希

asp.net - 在 Asp.Net MVC View 中使用 dropdownlistfor 和 foreach 吗?

r - 为什么这个 foreach/dopar 函数没有使用我要求的所有内核?