【问题标题】:parallel using plyr使用 plyr 并行
【发布时间】:2012-05-14 02:01:12
【问题描述】:

我正在读取一个 XML 文件,并想尝试使用 foreach 和 doSNOW 来提高性能,但是在使用 plyr 时我遇到了错误。我想可能是因为我错过了将函数和包发送给工人的方法。

library(foreach)  
library(doSNOW)  
cl <- makeCluster(4)  
registerDoSNOW(makeCluster(4, type = "SOCK"))

> getDoParWorkers()  
[1] 4  
> getDoParName()  
[1] "doSNOW"  
> getDoParVersion()  
[1] "1.0.5"

namelist = list()  
out1 <- foreach(i = 1:xmlSize(root[[3]])) %dopar% {  
     namelist[[i]] <- llply(xmlToList(root[[3]][[i]][[2]]), 
                        data.frame, .parallel = TRUE)
}

out2 <- t(as.vector(as.data.frame(namelist)))

产生错误:

Error in { : task 1 failed - "could not find function "llply""

【问题讨论】:

  • 如果您可以将它作为一个独立的示例重新发布,那将是很好的。什么是root,它当然需要一个库(XML)。

标签: r foreach parallel-processing plyr


【解决方案1】:

?foreach 然后查看.packages 参数

【讨论】:

  • +1。另外,@Sam35,你的第四行应该是registerDoSNOW(cl)。此外,无需分配给namelist(无论如何它都不会工作)。相反,让llply 的结果直接转到out1,如果你取出namelist[[i]] &lt;- ,他们就会这样做。
  • 谢谢你们,这很有帮助
猜你喜欢
  • 2013-09-29
  • 2018-05-15
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 2015-02-16
相关资源
最近更新 更多