【问题标题】:Error when using %dopar% instead of %do% in R (package doParallel)在 R 中使用 %dopar% 而不是 %do% 时出错(包 doParallel)
【发布时间】:2013-06-13 23:29:44
【问题描述】:

我遇到了一个奇怪的错误。 假设我在一个名为 data 的列表中有 10 个 xts 对象。我现在使用

搜索每三个组合
   data_names <- names(data)
   combs <- combn(data_names, 3)

我的基本目标是对这 1080 个三元组进行 PCA。 为了加快速度,我想使用包 doParallel。所以这里是缩短到错误发生点的sn-p:

list <- foreach(i=1:ncol(combs)) %dopar% {
    tmp_triple <- combs[,i]

    p1<-data[tmp_triple[[1]]][[1]]
    p2<-data[tmp_triple[[2]]][[1]]
    p3<-data[tmp_triple[[3]]][[1]]

    data.merge <- merge(p1,p2,p3,all=FALSE)
}

在这里,合并功能似乎是问题所在。错误是

任务 1 失败 - “无法将类 'c("xts", "zoo")' 强制转换为 data.frame”

但是,当将 %dopar% 更改为正常的串行 %do% 时,一切正常。

到目前为止,我无法找到任何解决此问题的方法,我什至不确定要寻找什么。

【问题讨论】:

    标签: r foreach parallel-processing xts


    【解决方案1】:

    foreach %dopar% 问题的快速解决方法是重新安装这些软件包:

    install.packages("doSNOW")
    
    install.packages("doParallel") 
    
    install.packages("doMPI")
    

    这些负责 R 中的并行性。这些包的旧版本中存在的错误现在已删除。它在我的情况下有效。

    【讨论】:

      【解决方案2】:

      比在函数中显式加载库更好的解决方案是利用 foreach() 函数的 .packages 参数:

      list <- foreach(i=1:ncol(combs),.packages=c("xts","zoo")) %dopar% {
          tmp_triple <- combs[,i]
      
          p1<-data[tmp_triple[[1]]][[1]]
          p2<-data[tmp_triple[[2]]][[1]]
          p3<-data[tmp_triple[[3]]][[1]]
      
          data.merge <- merge(p1,p2,p3,all=FALSE)
      }
      

      【讨论】:

      • 感谢您的建议!让一切都更清洁!
      【解决方案3】:

      问题可能是您没有对每个工人调用library(xts)。你没有说你使用的是什么后端,所以我不能 100% 确定。

      如果这是问题所在,那么这段代码将解决它:

      list <- foreach(i=1:ncol(combs)) %dopar% {
          library(xts)
          tmp_triple <- combs[,i]
      
          p1<-data[tmp_triple[[1]]][[1]]
          p2<-data[tmp_triple[[2]]][[1]]
          p3<-data[tmp_triple[[3]]][[1]]
      
          data.merge <- merge(p1,p2,p3,all=FALSE)
      }
      

      【讨论】:

      • 就是这样!我没有意识到我需要调用 lib,但它非常有意义,因为它启动了不同的会话......谢谢!
      猜你喜欢
      • 2021-12-24
      • 2019-07-30
      • 2019-12-26
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2016-10-11
      • 2018-07-15
      相关资源
      最近更新 更多