【发布时间】:2013-01-05 00:13:12
【问题描述】:
以下代码产生警告:
Warning message:
<anonymous> : <anonymous>: ... may be used in an incorrect context: ‘mean(x[l], ...)’
doForeach <- function(x, ...)
{
require(doSNOW)
require(foreach)
cl <- snow::makeCluster(2, type="MPI")
on.exit(snow::stopCluster(cl))
registerDoSNOW(cl)
do.i <- function(i) lapply(seq_len(length(x)), function(l) mean(x[l], ...))
foreach(i=seq_len(10)) %dopar% { do.i(i) }
}
x <- rnorm(20)
r <- doForeach(x, trim=1)
我猜这是因为工人/奴隶不再看到...。形式参数通常作为字符向量通过.export=c("<arg>") 传递,但这似乎不适用于... 参数。
在本例中处理... 参数的正确方法是什么?
【问题讨论】:
-
这将有助于尽可能减少它,同时仍然会产生错误。
doSNOW和foreach包可能不需要复制问题,这将大大简化问题 - 并可能导致更快的解决方案。问题可能是lapply还指定了...。 -
如果你用
do替换dopar,计算是按顺序完成的——然后它就可以工作了,所以它可能来自foreach。 -
好的,我只是稍微简化了示例并解释了我认为错误的位置。
标签: r foreach parallel-processing