以下代码会产生警告:
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)
我猜这是因为 worker /奴隶没有看到 ...
了。形式参数通常通过 .export=c("<arg>")
作为字符向量传递, 但这似乎不适用于 ...
参数。
处理...
的正确方法是什么?这个例子中的参数?
最佳答案
好吧,显然 ...
参数必须通过 do.i
传递。这是一个更明显(且运行正确)的示例:
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) max(x[l], ...))
foreach(i=seq_len(5)) %dopar% { do.i(i, ...) }
}
x <- 1:3
doForeach(x, 1.5)
关于r - 如何将 "..."参数传递给从 foreach() 调用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167068/