在foreach中分配并迭代保存来自foreach的输出

时间:2018-12-18 03:20:11

标签: r foreach parallel-processing doparallel

我正在连接到本地SQL Server数据库并循环运行一些查询。每次迭代的输出都作为RDS数据文件保存在本地磁盘上。

当我在标准的for循环中依次执行此操作时,效果很好,如下所示。

for(i in 1: NROW(Employee_Df))
{
     df_results <-  sqlQuery(myconn, paste(" SELECT * FROM Salary_Df 
               WHERE FullName like ",Employee_Df$FullName[i],  "",sep="'"))

        saveRDS(df_results, 
         file=paste0("/Home/Desktop", "Salary",Employee_Df$FullName[i], ".rds"),
        compress = TRUE)
}

当我尝试使用foreach分配来自同一查询的输出时,代码失败。我没有看到错误消息,但没有看到基于此查询结果保存的任何有效RDS文件。

foreach(i = 1:2, .packages="RODBC")%dopar%{

      df_results <-  sqlQuery(myconn, paste(" SELECT * FROM Salary_Df 
                   WHERE FullName like ",Employee_Df$FullName[i],  "",sep="'"))

            saveRDS(df_results, 
             file=paste0("/Home/Desktop", "Salary",Employee_Df$FullName[i], ".rds"),
            compress = TRUE)
  }

非常感谢您在foreach中进行这项工作的任何建议。

0 个答案:

没有答案