сохранить частичные результаты в цикле foreach в R - PullRequest
0 голосов
/ 02 октября 2018

Я хочу знать, сколько циклов было сделано, и сохранить результаты каждого законченного цикла, но функции assign и cat не работают.

library(doParallel)
library(foreach)
library(Matrix)

rm(list=ls())


cl=makeCluster(2)
registerDoParallel(cl)

  sink("report.txt")
result=foreach (n=1:10,.packages="Matrix" )%dopar%{
  variable <-sparseMatrix(dims = c(100,150), i={1}, j={1},x=0)


  cat(sprintf("tastk %d is complete \n",n),append=TRUE)
  assign(paste("variable",n,sep=""),variable)
  return(variable)

} 

sink()

1 Ответ

0 голосов
/ 03 октября 2018

Это прекрасно работает на моем компьютере с Linux:

library(doParallel)
library(foreach)
library(Matrix)

rm(list=ls())


cl=makeCluster(2, outfile = "report.txt")
registerDoParallel(cl)

result=foreach (n=1:10,.packages="Matrix" )%dopar%{

  variable <-sparseMatrix(dims = c(100,150), i={1}, j={1},x=0)      

  cat(sprintf("task %d is complete \n",n))
  assign(paste("variable",n,sep=""),variable)
  return(variable)

} 

stopCluster(cl)
...