Windows系统下的'mclapply'函数

5
我正在使用https://github.com/mplatzer/BTYDplus/blob/master/R/pareto-nbd-mcmc.r中给出的BTYD plus代码。此代码使用MCMC技术估算BTYD模型的Pareto/NBD参数。

如果您查看代码的224-228行,您会发现它使用了“mclapply”函数,但它只能在Linux或MAC上运行。我正在使用Windows机器,需要将代码的这部分转换为Windows可执行的形式。因此,有人可以帮助我处理此特定代码,或者提供如何在Windows上使用'mclapply'的一般思路吗?

2个回答

11

使用parLapply

Sys.info()["sysname"]
#  sysname 
#"Windows"

library(parallel)
cl <- makeCluster(getOption("cl.cores", 2))
l <- list(1, 2)
system.time(
parLapply(cl, l, function(x) {
  Sys.sleep(10)
  })
)
#user  system elapsed 
#0       0      10 

stopCluster(cl)

如果您的任务涉及随机数生成,您可能需要查看 doRNG 包以实现可重复性。


0
在parallel包的文档中,我找到了以下内容:
“作为lapply的类比,有 parLapply(cl, x, FUN, ...) mclapply(X, FUN, ..., mc.cores) 其中mclapply在Windows上不可用...”
第3页https://stat.ethz.ch/R-manual/R-devel/library/parallel/doc/parallel.pdf 所以我猜parLapply是你要找的。
警告:我必须说我自己还没有使用过parLapply。我在Windows中运行R中的唯一并行计算是使用foreach包完成的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接