能够在 Windows 上多线程会很棒,但也许这个问题比我想象的要难.. :(

survey:::svyby.default 内部有一个块,它是 lapplymclapply,具体取决于 multicore=TRUE 和您的操作系统。无论如何,Windows 用户都会被迫进入 lapply 循环,我想知道是否有任何方法可以改为使用 mclapply 路径……加快计算速度。

我不太了解并行处理的内部结构,但我做了一些实验,看看是否有任何 Windows 可接受的替代方案可行。首先我尝试覆盖 mclapply

mclapply <-
    function( X , FUN , ... ){
        clusterApply(
            x = X ,
            fun = FUN ,
            cl = makeCluster( detectCores() ) , ... )
    }

接下来我使用 fixInNamespace( svyby.default , "survey" ) 删除该行
if (multicore) parallel:::closeAll()
但这只是让我达到了
> svyby(~api99, ~stype, dclus1, svymean , multicore=TRUE )
Error in checkForRemoteErrors(val) :
  3 nodes produced errors; first error: object 'svymean' not found

最佳答案

引用 Rsurvey 包的作者 Thomas Lumley 博士回应我的询问——

关于r - 是否可以让 R 调查包的 `svyby` 函数 multicore= 参数在 Windows 上工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24737166/

10-11 21:02